《程序設計與算法語言上機試題abc-副本-副本》由會員分享,可在線閱讀,更多相關《程序設計與算法語言上機試題abc-副本-副本(83頁珍藏版)》請在裝配圖網上搜索。
1、
1、10 個人的成績存放在 score 數組中,編寫函數 fun ,求出平均分,并作為
函數值返回,且輸出不及格人數。
#include
float fun (int a[10])
{
int i,aver,sum=0;
for(i=0;i<10;i++)
sum=sum+a[i];
aver=sum/10;
return aver;
}
void main()
{
2、
int i,j=0,a[10]={10,20,30,40,50,60,70,80,90,100};
float aver;
for(i=0;i<10;i++)
if(a[i]<60)
j++;
aver=fun (a);
printf("10 個人的成績平均分為 :%5.2f\n",aver);
printf("\n");
printf(" 不及格人數 :%d\n",j);
}
2、求出 1 到 100 之內能被 7 或者
3、 11 整除,但不能同時被 7 和 11 整除的所有
整數,并將他們放在指定的數組 a 中。
#include
void main()
{
int i,n,a[500];
n = fun(a);
for(i = 0; i < n; i++)
printf("%8d",a[i]);
}
int fun (int a[])
{
int i = 7, j = 0;
for(; i <= 100; i++)
4、
if ((i % 7 == 0 || i % 11 == 0)&&( !(i % 7== 0 && i % 11 == 0) ) )
a[j++] = i;
return j ;}
3、求方程 ax2 bx c 0 的解。
#include
#include
void main()
{
float a,b,c,d,x1,x2,m,n;
printf(" 請輸入方程的 3 個系數 ,a,b,c:
5、");
scanf("%f,%f,%f",&a,&b,&c);
printf(" 該方程 \n");
if(fabs(a)<=1e-6)
{
if(fabs(b)<=1e-6)
{
if(fabs(c)<=1e-6)
printf(" 有無窮多個解 \n");
else
printf(" 無解 \n");
}
else printf(" 有一個根 :%8.4f\n",-c/b);
}
else
6、
{
d=b*b-4*a*c;
if(fabs(d)<=1e-6)
printf(" 有兩個相等的實根 :%8.4f\n",-b/(2*a));
else
if(d>1e-6)
{
x1=(-b+sqrt(d))/(2*a);
x2=(-b-sqrt(d))/(2*a);
printf(" 有兩個不等的實根 :%8.4f 和 %8.4f\n",x1,x2);
}
else
{
m=-b/(2
7、*a);
n=sqrt(-d)/(2*a);
printf(" 有兩個復根 :\n");
printf("%8.4f+%8.4fi\n",m,n);
printf("%8.4f-%8.4fi\n",m,n);
}
}
}
4、給出一個百分制成績,要求輸出成績等級 A、B、C、D 、E,90 分以上為 A ,
80 ~89 分為 B,70 ~79 分為 C,60 ~ 69 分為 D ,60 分以下為 E。要求:當輸
入分數為負值,或大于 10
8、0 時,通知用戶“輸入數據錯誤,重新輸入”。
#include
void main()
{
float x;
char y;
printf(" 輸入學生成績 :x=");
scanf("%f",&x);
while(x>100||x<0)
{
printf(" 輸入錯誤,請重新輸入學生成績 :x=");
scanf("%f",&x);
}
if(x>=90)
y='A
9、';
else
if(x>=80)
y='B';
else
if(x>=70)
y='C';
else
if(x>=60)
y='D';
else
y='E';
printf("\n 學生的等級為: y=%c\n",y);
}
5、求數組中最大元素在數組中的下標并存放在指針 k 所指的儲存單元中。
# include void fun(int *s
10、, int t , int *k)
{
int i ,max; max=s[0];
for (i=0;imax)
{
max=s[i];
*k=i;
}
}
void main( )
{
int a[10]={876,675,896,101,301,401,980,431,451,777}, k ;
fun(a,10, &k);
printf(" 最大值在 a 中的位置為: i=%d\n
11、最大值為: %d\n", k, a[k]);
}
6、編寫函數 fun ,功能是:根據以下攻勢計算 s,計算結果作為函數值返回; n
通過形參傳入。 S=1+1/(1+2)+1/(1+2+3)+ +1/(1+2+3+4+ +n) 。
#include
float fun(int n)
{
int i;
float s=1.0,t=1.0;
for(i=2;i<=n;i++)
{
t=t+i;
s=
12、s+1/t;
}
return s;
}
void main()
{
float y;
int n;
printf(" 輸入 n 的值: \n");
scanf("%d",&n);
y=fun(n);
printf("y=%f\n",y);
}
7、定義了 7 ×7 的二維數組, 并在主函數中自動賦值。 編寫函數 fun(int a[][7]),
該函數的功能是:使數組左下半三角元素中
13、的值全部置成 0 。
#include
int fun(int a[][7])
{
int i,j;
for(i=0;i<7;i++)
for(j=0;j<7;j++)
{
if(i>j)
a[i][j]=0;
}
}
void main()
{
int a[7][7],i,j;
for(i=0;i<7;i++)
{
for(
14、j=0;j<7;j++)
{
a[i][j]=i+j+1;
printf("%3d",a[i][j]);
}
printf("\n");
}
fun(a);
printf(" 輸出處理后的數組 a:\n");
for(i=0;i<7;i++)
{
for(j=0;j<7;j++)
{
printf("%3d",a[i][j]);
}
printf("\n");
}
15、
}
8、編寫一個函數 void fun(int tt[5][6],int pp[6]),tt 指向一個 5 行 6 列的二維函
數組,求出二維函數組每列中最小元素,并依次放入 pp 所指定一維數組中。二
維數組中的數已在主函數中初始化。
#include
void fun(int tt[5][6],int pp[6])
{ int i,j,min;
for(j = 0;j < 6;j++)
{ min = tt[0][j]; for(i= 0
16、;i < 5;i++)
{ if(tt[i][j] < min) min = tt[i][j];
}
pp[j] = min;
}
}
void main()
{
int
t[5][6]={{68,56,32,44,54,12},{14,56,24,47,88,58},{42,85,22,75,44,56},{45,12,3,5,78,45},
{45,65,25,75,85,41}};
int p[6],i,j,k;
printf("The
17、riginal data is:\n");
for(i = 0;i < 5;i++)
{ for(j = 0;j < 6;j++) printf("%6d",t[i][j]);
printf("\n");
}
fun(t,p);
printf("\n 二維函數組每列中最小元素為 :\n");
for(k = 0;k < 6;k++)
printf("%4d",p[k]);
printf("\n");
}
9、求出
18、4 行 5 列的二維數組周邊元素之和。
#include
void main()
{
int a[4][5],i,j,sum=0,sum1=0,sum2=0;
printf(" 請輸入 4*5 矩陣數據: ");
for(i=0;i<4;i++)
for(j=0;j<5;j++)
scanf("%d",&a[i][j]);
{
for(i=0;i<4;i++)
sum1=sum1+a[i][0]+a[i][4];
19、
}
{
for(j=0;j<5;j++)
sum2=sum2+a[0][j]+a[3][j];
}
sum=sum1+sum2-a[0][0]-a[0][4]-a[3][0]-a[3][4];
printf(" 矩陣周邊元素之和為: %d\n",sum);
}
10 、 編寫程序,把字符串中的內容逆置(不準使用多個字符數組)。
#include
void main()
{
char a[80
20、];
char t;
int i,n;
printf(" 輸入一行字符串: \n");
gets(a);
n=strlen(a);
for(i=0;i<=n/2;i++)
{
t=a[i];
a[i]=a[n-i-1];
a[n-i-1]=t;
}
printf(" 字符串中的內容逆置為: \n");
puts(a);
}
11 、編寫程序,從字符
21、串中刪除指定的字符,同一字母的大、小寫按不同字符處理。并把刪除好的字符以字符串的形式輸出(不準使用多個字符數組)。
#include
#include
void main()
{
char ch,str[100];
int i,j=0;
printf(" 輸入字符串: \n");
gets(str); 無上限讀取字符
printf(" 輸入要刪除的字符 :");
ch=getchar();
for(i=0
22、;i
#include
void main()
{
char a[80];
char ch;
int i,j;
int n;
23、
printf(" 輸入一串字符字符 :\n");
gets(a);
printf(" 輸入要刪除的字符 :");
ch=getchar();
i=0;
while(a[i]!='\0')
{
while(a[i]!='\0'&&a[i]!=ch)
i++;
n=strlen(a);
for(j=i;j
24、printf(" 刪除后的字符串: ");
puts(a);
}
12 、編寫程序 ,對長度為 7 個字符的字符串,除首尾字符外,將其余 5 個字符按
ascii 碼降序排列。
#include
void main()
{
char c[8];
char i,j,temp;
printf(" 長度為 7 個字符的 c 字符串 :");
gets(c);
for (i=1;i<=5;i++)
{
25、
for (j=i+1;j<=5;j++)
{
if (c[i]
26、長的字符串。若兩個字符串長度相同,
則返回第一個字符串。
#include
#include
char *fun(char *a,char *b)
{
int i,j;
for(i=0;*(a+i);i++);
for(j=0;*(b+j);j++);
if(i>=j)
return a;
else
return b;
}
void main()
{
27、
char a[100],b[100],*c;
printf(" 輸入 a 字符串 : ");
gets(a);
printf(" 輸入 b 字符串 :");
gets(b);
c=fun(a,b);
printf(" 輸出較長的 c 字符串 :");
puts(c);
}
14 、給一個不多于 5 位的正整數,要求求出它是幾位數,打印出每一位數字,
并按逆序打印出各位數字。
#include
28、
void main()
{
long int num;
int a,b,c,d,f,place;
printf(" 輸入 num 的數值: ");
scanf("%d",&num);
if(num>9999)
place=5;
else
if(num>999)
place=4;
else
if(num>99)
place=3;
else
if(num>9)
29、
place=2;
else
place=1;
printf("place=%d\n",place);
f=num/10000;
d=num/1000%10;
c=num/100%10;
b=num/10%10;
a=num%10;
switch(place)
{
case 5: printf("%d,%d,%d,%d,%d",f,d,c,b,a);
printf("\n 反序數為 :");
print
30、f("%d,%d,%d,%d,%d\n",a,b,c,d,f); break;
case 4: printf("%d,%d,%d,%d",d,c,b,a);
printf("\n 反序數為 :");
printf("%d,%d,%d,%d\n",a,b,c,d); break;
case 3: printf("%d,%d,%d",c,b,a);
printf("\n 反序數為 :");
printf("%d,%d,%d\n",a,b,c); break;
case 2: pri
31、ntf("%d,%d",b,a);
printf("\n 反序數為 :");
printf("%d,%d\n",a,b); break;
case 1: printf("%d",a);
printf("\n 反序數為 :");
printf("%d\n",a); break;
}
}
15 、編寫一個函數 fun ,它的功能是:求出一個 6 ×8 的整型二維數組中最大元
素的值,并將此值返回調用函數。 數組在主函數中初始化,并最終輸出結果。
32、
#include
int fun(int a[6][8])
{
int i,j,max=a[0][0];
for(i=0;i<6;i++)
for(j=0;j<8;j++)
if(max
33、2,18,65,24},{32,1,5,4,6,7,8,9},{5,5,5,9,9,9,8,8,}
,{9,5,2,4,7,81,2,5},{3,2,1,4,5,6,9,8}};
int i,j,max;
printf("array a:\n");
for(i=0;i<6;i++)
{
for(j=0;j<8;j++)
{
printf("%4d",arr[i][j]);
}
printf("\n");
}
max=fun(ar
34、r);
printf("max=%d\n",max);
}
16 、將字符數組 s 中的字符串,除了下標為偶數、同時 ascii 值也為偶數的字符
外,其余的全都刪除;串中剩余字符所形成的一個新串放在新的字符數組 t 中。
#include
#include
void main()
{
char s[100], t[100];
int i,j=0,n;
printf("\n
35、輸入字符串 S:");
gets(s);//scanf("%s", s);
n=strlen(s);
for(i=0;i
#include
36、
void fun(char *s,char t[])
{
int i,j=0,n;
n=strlen(s);
for(i=0;i
37、nter string S:");
gets(s);//scanf("%s", s);
fun(s, t);
printf("\nThe result is : %s\n", t);
}
17 、 假定輸入的字符串中只包含字母和 * 號。則使字符串中的 * 號不得多于 3 個;
若多于 3 個,則刪除多于的 * 號;若少于或等于 3 個,則什么也不做。
#include
#include
v
38、oid main()
{
char str[50],c[50],b;
int i,j,n,a[50]={0},k,l;
gets(str);
n=strlen(str);
for(l=0,j=0,i=0;i
39、
a[j]=i;
j++;
}
}
for(i=0;i
void main(
40、)
{
int n;
int i=1,t=1,sum=0;
printf(" 輸入 n 的數值: ");
scanf("%d",&n);
do
{
t=t*i;
sum=sum+t;
i++;
}
while(i<=n);
printf("sum=%d\n",sum);
}
19 、編寫程序,刪除字符串中的所有空格。
#include
41、
#include
void main()
{
char str[100];
int i,j=0;
printf(" 輸入字符串: \n");
gets(str);
for(i=0;i
42、
20 、求出字符數組 ss 中存儲的字符串中指定字符的個數。
#include
void main()
{
int fun(char a[],char ch);
char a[100],ch;
printf("\nPlease enter a string:");
gets(a);
printf("\nPlease enter a char:");
ch=getchar();
printf("The number is:%d\n",fun
43、(a,ch));
}
int fun(char a[],char ch)
{
int i,j=0;
for(i=0;a[i]!='\0';i++)
if(a[i]==ch)
j++;
return j;
}
#include
void main()
{
char a[100],ch;
int i,j=0;
printf(" 輸入字符串: ");
44、
gets(a);
printf("\n");
printf(" 輸入要查找的字符 :");
ch=getchar();
for(i=0;a[i]!='\0';i++)
if(a[i]==ch)
j++;
printf("\n");
printf(" 字符串 a 中指定字符的個數 :%d\n",j);
}
21 、輸入一行字符,分別統(tǒng)計出其中的大小寫字母、空格、數字和其他字符的個數。
#include
45、
void main()
{
int i=0,j=0,k=0,l=0;
char c;
printf(" 輸入一行字符: \n");
while((c=getchar())!='\n')
{
if((c>='A'&&c<='Z')||(c>='a'&&c<='z'))
i++;
else
if(c>='0'&&c<='9')
j++;
else
if(c==' ')
k+
46、+;
else
l++;
}
printf(" 大 小 寫 字 母 數 :i=%3d\n 數 字 數 :j=%3d\n 空 格 數 :k=%3d\n 其 他 符 號
數:l=%3d\n",i,j,k,l); }
22 、將 5 行 6 列的二維數組中的數據,按列的順序依次放到一個一維數組中。
#include
void main()
{
int a[5][6]={1,2,3,4,5,6,7,8,9,10,11,12,13,14,15
47、,16,17,18,19,20,
1,2,3,4,5,6,7,8,9,10};
int b[30];
int i,j,k=0;
for (j=0;j<6;j++)
{
for(i=0;i<5;i++)
{
b[k++]=a[i][j];
}
}
printf(" 二維數組: \n");
for (i = 0; i < 5; i++)
{
for(j=0;j<6;j++)
48、
{
printf("%3d",a[i][j]);
}
printf("\n");
}
printf("\n");
printf(" 一維數組 :\n");
for (i= 0;i
void fun( int (*s)[4], int *b)
49、
{
int i,j,k=0;
for(j=0;j<4;j++)
for(i=0;i<3;i++)
{
b[k]=*(*(s+i)+j);
k++;
}
b[k]= '\0';
}
main()
{
int a[30],w[3][4]={{1,2,3,4},{4,5,6,7},{6,7,8,9}};
int i,j;
printf(" 輸出數組 w:\n");
50、for(i=0; i<3; i++)
{
for(j=0;j<4; j++)
printf("%3d",w[i][j]);
printf("\n");
}
fun(w,a);
printf(" 按列的順序依次放到一個一維數組 b : \n");
for(i=0;i<12;i++)
printf("%3d",a[i]);
printf("\n\n");
}
23 、求兩個 2 ×3 和 3×2 的矩陣之積,并把結果顯示出來。
51、
#include
void main()
{
int a[2][3],b[3][2],c[2][2]={0},i,j,x;
printf(" 輸入一個 2 行 3 列的矩陣 a:\n");
for(i=0;i<2;i++)
{
for(j=0;j<3;j++)
{
scanf("%d",&a[i][j]);
printf("%5d",a[i][j]);
}
printf("\n")
52、;
}
printf(" 輸入一個 3 行 2 列的矩陣 b:\n");
for(i=0;i<3;i++)
{
for(j=0;j<2;j++)
{
scanf("%d",&b[i][j]);
printf("%5d",b[i][j]);
}
printf("\n");
}
printf("a*b=:\n");
for(i=0;i<2;i++)
{
for(j=0;j<2;j++)
53、
{
for(x=0;x<3;x++)
c[i][j]+=a[i][x]*b[x][j];
printf("%5d",c[i][j]);
}
printf("\n");
}
}
24 、定義了一個 6 ×6 的二維數組,并進行初始化。將數組右上半三角元素中的
值乘以 10 。
#include
void fun(int a[][6]);
void main()
{
54、
int i,j;
int a[6][6];
printf("array a:\n");
for(i=0;i<6;i++)
{
for(j=0;j<6;j++)
{
a[i][j]=i+j+1;
printf("%3d",a[i][j]);
}printf("\n");
}
fun(a);
printf(" 經過處理后的數組元素 array a:\n");
for(i=0;i<6;i++)
55、
{
for(j=0;j<6;j++)
{
printf("%5d",a[i][j]);
}
printf("\n");
}
}
void fun(int a[][6])
{
int i,j;
for(i=0;i<6;i++)
for(j=0;j<6;j++)
{
if(i
56、
#include
void main()
{
int i,j;
int a[6][6];
printf("array a:\n");
for(i=0;i<6;i++)
{
for(j=0;j<6;j++)
{
a[i][j]=i+j+1;
printf("%3d",a[i][j]);
}
printf("\n");
}
printf(" 經過處理后的數組元素
57、array a:\n");
for(i=0;i<6;i++)
{
for(j=0;j<6;j++)
{
if(i
void
58、main()
{
int i,j;
int
a[5][6]={{4,5,7,8,1,6},{8,4,6,5,1,5},{7,8,9,4,5,6},{1,2,3,4,5,6},{1,2,3,6,5,2}};
int b[6][5];
printf("array a:\n");
for(i=0;i<5;i++)
{
for(j=0;j<6;j++)
{
printf("%3d",a[i][j]);
b[j][i]=a[i][j];
59、
}
printf("\n");
}
printf("a 的轉置矩陣 array b:\n");
for(i=0;i<6;i++)
{
for(j=0;j<5;j++)
{
printf("%3d",b[i][j]);
}
printf("\n");
}
}
26 、將兩個兩位數的正整數 a,b 合并成一個整數放在 c 中。合并的方式是:將 a
數的十位和個位依次放在 c
60、數的千位和十位上, b 數的十位和個位數依次放在 c
數的百位和個位上。
#include
void main()
{
int a,b,c,i,j,k,l;
printf(" 輸入 a,b 的值: ");
scanf("%d%d",&a,&b);
i=a/10;
j=a%10;
k=b/10;
l=b%10;
c=1000*i+k*100+j*10+l;
printf(" 兩個兩位數的
61、正整數 a,b 合并成一個整數為: c=%d\n",c);
}
27 、編寫一個函數 fun ,它的功能是:實現兩個字符串的連接 (不使用庫函數
strcat) ,即把 p2 所指的字符串連接到 p1 所指的字符串后。主函數中僅僅輸入
和輸出。
#include
#include
int fun(char a[],char b[])
{
int i=0,j=0;
while(a[i++]!='\0');
i--;
62、
while((a[i++]=b[j++])!='\0');
return (a[i]);
}
int main()
{
char a[100],b[100];
printf(" 請輸入一串字符 a:");
gets(a);
printf("\n");
printf(" 請再輸入一串字符 b:");
gets(b);
printf("\n");
fun(a,b);
printf("
63、 新字符串為 :");
puts(a);
printf("\n");
}
28 、請編寫函數 fun, 該函數的功能是:實現 b=a+aT ,即把矩陣 a 加上 a 的轉
置,存放在矩陣 b 中。計算結果在 main 函數中輸出(a 為一個 3 行 3 列的整型
數組)。
#include
void fun( int a[3][3], int b[3][3])
{
int i,j, at[3][3];
for(i=0;i<
64、=2;i++)
for(j=0;j<=2;j++)
at[i][j]=a[j][i];
for(i=0;i<3;i++)
for(j=0;j<3;j++)
b[i][j]=a[i][j]+at[i][j];
}
main( )
{
int a[3][3]={{1, 2, 3}, {4, 5, 6}, {7, 8, 9}}, t[3][3] ;
int i, j,at[3][3];
printf(" 輸出
65、一個 3*3 的矩陣 a:\n");
for(i=0;i<3;i++)
{
for(j=0;j<3;j++)
{
printf("%5d",a[i][j]);
at[i][j]=a[j][i];
}
printf("\n");
}
printf(" 輸出 a 的轉置矩陣 at:\n");
for(i=0;i<3;i++)
{
for(j=0;j<3;j++)
{
pri
66、ntf("%5d",at[i][j]);
}
printf("\n");
}
printf("\n a+at=\n");
fun(a, t) ;
for (i = 0 ; i < 3 ; i++)
{
for (j = 0 ; j < 3 ; j++)
printf("%7d", t[i][j]) ;
printf("\n") ;
}
}
29 、依次輸出 200 以內(包含 200 )能被 5 整除但不能被 15 整除的自然數。
#include
void main()
{
int i;
for(i=1;i<=200;i++)
{
if(i%5==0&&i%15!=0)
printf("i=%d\n",i);