《程序設(shè)計與算法語言上機試題abc.doc》由會員分享,可在線閱讀,更多相關(guān)《程序設(shè)計與算法語言上機試題abc.doc(44頁珍藏版)》請在裝配圖網(wǎng)上搜索。
1、10個人的成績存放在score數(shù)組中,編寫函數(shù)fun,求出平均分,并作為函數(shù)值返回,且輸出不及格人數(shù)。
#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()
{
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("不及格人數(shù):%d\n",j);
}
2、 求出1到100之內(nèi)能被7或者11整除,但不能同時被7和11整除的所有整數(shù),并將他們放在指定的數(shù)組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++)
if ((i % 7 == 0 || i % 11 == 0)&&( !(i % 7== 0 && i % 11 == 0) ) )
a[j++] = i;
return j ;}
3、求方程的解。
#include
#include
void main()
{
float a,b,c,d,x1,x2,m,n;
printf("請輸入方程的3個系數(shù),a,b,c:");
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
{
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*a);
n=sqrt(-d)/(2*a);
printf("有兩個復(fù)根:\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。要求:當(dāng)輸入分?jǐn)?shù)為負(fù)值,或大于100時,通知用戶“輸入數(shù)據(jù)錯誤,重新輸入”。
#include
void main()
{
float x;
char y;
printf("輸入學(xué)生成績:x=");
scanf("%f",&x);
while(x>100||x<0)
{
printf("輸入錯誤,請重新輸入學(xué)生成績:x=");
scanf("%f",&x);
}
if(x>=90)
y=A;
else
if(x>=80)
y=B;
else
if(x>=70)
y=C;
else
if(x>=60)
y=D;
else
y=E;
printf("\n學(xué)生的等級為:y=%c\n",y);
}
5、 求數(shù)組中最大元素在數(shù)組中的下標(biāo)并存放在指針k所指的儲存單元中。
# include
void fun(int *s, 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最大值為:%d\n", k, a[k]);
}
6、編寫函數(shù)fun,功能是:根據(jù)以下攻勢計算s,計算結(jié)果作為函數(shù)值返回;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=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、定義了77的二維數(shù)組,并在主函數(shù)中自動賦值。編寫函數(shù) fun(int a[][7]),該函數(shù)的功能是:使數(shù)組左下半三角元素中的值全部置成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(j=0;j<7;j++)
{
a[i][j]=i+j+1;
printf("%3d",a[i][j]);
}
printf("\n");
}
fun(a);
printf("輸出處理后的數(shù)組a:\n");
for(i=0;i<7;i++)
{
for(j=0;j<7;j++)
{
printf("%3d",a[i][j]);
}
printf("\n");
}
}
8、 編寫一個函數(shù)void fun(int tt[5][6],int pp[6]),tt指向一個5行6列的二維函數(shù)組,求出二維函數(shù)組每列中最小元素,并依次放入pp所指定一維數(shù)組中。二維數(shù)組中的數(shù)已在主函數(shù)中初始化。
#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;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 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二維函數(shù)組每列中最小元素為:\n");
for(k = 0;k < 6;k++)
printf("%4d",p[k]);
printf("\n");
}
9、求出4行5列的二維數(shù)組周邊元素之和。
#include
void main()
{
int a[4][5],i,j,sum=0,sum1=0,sum2=0;
printf("請輸入4*5矩陣數(shù)據(jù):");
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];
}
{
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、 編寫程序,把字符串中的內(nèi)容逆置(不準(zhǔn)使用多個字符數(shù)組)。
#include
void main()
{
char a[80];
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èi)容逆置為:\n");
puts(a);
}
11、 編寫程序,從字符串中刪除指定的字符,同一字母的大、小寫按不同字符處理。并把刪除好的字符以字符串的形式輸出(不準(zhǔn)使用多個字符數(shù)組)。
#include
#include
void main()
{
char ch,str[100];
int i,j=0;
printf("輸入字符串:\n");
gets(str); \\無上限讀取字符
printf("輸入要刪除的字符:");
ch=getchar();
for(i=0;i
#include
void main()
{
char a[80];
char ch;
int i,j;
int n;
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
void main()
{
char c[8];
char i,j,temp;
printf("長度為7個字符的c字符串:");
gets(c);
for (i=1;i<=5;i++)
{
for (j=i+1;j<=5;j++)
{
if (c[i]
#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()
{
char a[100],b[100],*c;
printf("輸入a字符串: ");
gets(a);
printf("輸入b字符串 :");
gets(b);
c=fun(a,b);
printf("輸出較長的c字符串:");
puts(c);
}
14、給一個不多于5位的正整數(shù),要求求出它是幾位數(shù),打印出每一位數(shù)字,并按逆序打印出各位數(shù)字。
#include
void main()
{
long int num;
int a,b,c,d,f,place;
printf("輸入num的數(shù)值:");
scanf("%d",&num);
if(num>9999)
place=5;
else
if(num>999)
place=4;
else
if(num>99)
place=3;
else
if(num>9)
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反序數(shù)為:");
printf("%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反序數(shù)為:");
printf("%d,%d,%d,%d\n",a,b,c,d); break;
case 3: printf("%d,%d,%d",c,b,a);
printf("\n反序數(shù)為:");
printf("%d,%d,%d\n",a,b,c); break;
case 2: printf("%d,%d",b,a);
printf("\n反序數(shù)為:");
printf("%d,%d\n",a,b); break;
case 1: printf("%d",a);
printf("\n反序數(shù)為:");
printf("%d\n",a); break;
}
}
15、 編寫一個函數(shù)fun,它的功能是:求出一個68的整型二維數(shù)組中最大元素的值,并將此值返回調(diào)用函數(shù)。 數(shù)組在主函數(shù)中初始化,并最終輸出結(jié)果。
#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
#include
void main()
{
char s[100], t[100];
int i,j=0,n;
printf("\n輸入字符串 S:");
gets(s);//scanf("%s", s);
n=strlen(s);
for(i=0;i
#include
void fun(char *s,char t[])
{
int i,j=0,n;
n=strlen(s);
for(i=0;i
#include
void 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
void main()
{
int n;
int i=1,t=1,sum=0;
printf("輸入n的數(shù)值:");
scanf("%d",&n);
do
{
t=t*i;
sum=sum+t;
i++;
}
while(i<=n);
printf("sum=%d\n",sum);
}
19、 編寫程序,刪除字符串中的所有空格。
#include
#include
void main()
{
char str[100];
int i,j=0;
printf("輸入字符串:\n");
gets(str);
for(i=0;i
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(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("輸入字符串:");
gets(a);
printf("\n");
printf("輸入要查找的字符:");
ch=getchar();
for(i=0;a[i]!=\0;i++)
if(a[i]==ch)
j++;
printf("\n");
printf("字符串a(chǎn)中指定字符的個數(shù):%d\n",j);
}
21、輸入一行字符,分別統(tǒng)計出其中的大小寫字母、空格、數(shù)字和其他字符的個數(shù)。
#include
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++;
else
l++;
}
printf("大小寫字母數(shù):i=%3d\n數(shù)字?jǐn)?shù):j=%3d\n空格數(shù):k=%3d\n其他符號數(shù):l=%3d\n",i,j,k,l); }
22、 將5行6列的二維數(shù)組中的數(shù)據(jù),按列的順序依次放到一個一維數(shù)組中。
#include
void main()
{
int a[5][6]={1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,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("二維數(shù)組:\n");
for (i = 0; i < 5; i++)
{
for(j=0;j<6;j++)
{
printf("%3d",a[i][j]);
}
printf("\n");
}
printf("\n");
printf("一維數(shù)組:\n");
for (i= 0;i
void fun( int (*s)[4], int *b)
{
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("輸出數(shù)組w:\n");
for(i=0; i<3; i++)
{
for(j=0;j<4; j++)
printf("%3d",w[i][j]);
printf("\n");
}
fun(w,a);
printf("按列的順序依次放到一個一維數(shù)組b:\n");
for(i=0;i<12;i++)
printf("%3d",a[i]);
printf("\n\n");
}
23、求兩個23和32的矩陣之積,并把結(jié)果顯示出來。
#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");
}
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++)
{
for(x=0;x<3;x++)
c[i][j]+=a[i][x]*b[x][j];
printf("%5d",c[i][j]);
}
printf("\n");
}
}
24、 定義了一個66的二維數(shù)組,并進行初始化。將數(shù)組右上半三角元素中的值乘以10。
#include
void fun(int a[][6]);
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");
}
fun(a);
printf("經(jīng)過處理后的數(shù)組元素array a:\n");
for(i=0;i<6;i++)
{
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
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("經(jīng)過處理后的數(shù)組元素array a:\n");
for(i=0;i<6;i++)
{
for(j=0;j<6;j++)
{
if(i
void 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];
}
printf("\n");
}
printf("a的轉(zhuǎn)置矩陣array b:\n");
for(i=0;i<6;i++)
{
for(j=0;j<5;j++)
{
printf("%3d",b[i][j]);
}
printf("\n");
}
}
26、將兩個兩位數(shù)的正整數(shù)a,b合并成一個整數(shù)放在c中。合并的方式是:將a數(shù)的十位和個位依次放在c數(shù)的千位和十位上,b數(shù)的十位和個位數(shù)依次放在c數(shù)的百位和個位上。
#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("兩個兩位數(shù)的正整數(shù)a,b合并成一個整數(shù)為: c=%d\n",c);
}
27、 編寫一個函數(shù)fun,它的功能是:實現(xiàn)兩個字符串的連接(不使用庫函數(shù)strcat),即把p2所指的字符串連接到p1所指的字符串后。主函數(shù)中僅僅輸入和輸出。
#include
#include
int fun(char a[],char b[])
{
int i=0,j=0;
while(a[i++]!=\0);
i--;
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(" 新字符串為:");
puts(a);
printf("\n");
}
28、請編寫函數(shù)fun,該函數(shù)的功能是:實現(xiàn)b=a+aT,即把矩陣a加上a的轉(zhuǎn)置,存放在矩陣b中。計算結(jié)果在main函數(shù)中輸出(a為一個3行3列的整型數(shù)組)。
#include
void fun( int a[3][3], int b[3][3])
{
int i,j, at[3][3];
for(i=0;i<=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("輸出一個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的轉(zhuǎn)置矩陣at:\n");
for(i=0;i<3;i++)
{
for(j=0;j<3;j++)
{
printf("%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以內(nèi)(包含200)能被5整除但不能被15整除的自然數(shù)。
#include
void main()
{
int i;
for(i=1;i<=200;i++)
{
if(i%5==0&&i%15!=0)
printf("i=%d\n",i);
}
}
30、 編寫函數(shù)fun,該函數(shù)的功能是:刪去一維數(shù)組中所有相同的數(shù),使之只剩一個。數(shù)組中的數(shù)已按由小到大的順序排列,函數(shù)返回刪除后數(shù)組中數(shù)據(jù)的個數(shù)。
#include
int fun(int a[],int n)
{
int i,j;
for(i=1,j=0;i
void fun( int a[], int b[])
{
int i,j;
for(j=0;j<11;j++)
b[j]=0;
for(i=0;i<30;i++)
if(a[i]>=0&&a[i]<=9)
b[0]+=1;
else
if(a[i]>=10&&a[i]<=19)
b[1]+=1;
else
if(a[i]>=20&&a[i]<=29)
b[2]+=1;
else
if(a[i]>=30&&a[i]<=39)
b[3]+=1;
else
if(a[i]>=40&&a[i]<=49)
b[4]+=1;
else
if(a[i]>=50&&a[i]<=59)
b[5]+=1;
else
if(a[i]>=60&&a[i]<=69)
b[6]+=1;
else
if(a[i]>=70&&a[i]<=79)
b[7]+=1;
else
if(a[i]>=80&&a[i]<=89)
b[8]+=1;
else
if(a[i]>=90&&a[i]<=99)
b[9]+=1;
else
b[10]+=1;
}
void main()
{
int i, d[11];
int age[30]={1,2,56,78,10,25,87,96,31,110,45,65,42,73,23,
118,90,1,10,23,34,45,56,67,68,78,89,91,46,97};
printf("輸出30個年齡數(shù) :\n");
for(i=0; i<30; i++)
printf("%4d",age[i]);
printf("\n\n");
printf("各年齡段的人數(shù)為:\n");
fun( age, d);
for(i=0;i<10;i++)
printf("%3d--%3d: %2d\n", i*10, i*10+9, d[i]);
printf("Over 100: %2d\n", d[10]);
}
#include
void main()
{
int age[30],i,d[11]={0};
printf("輸入30個數(shù)據(jù):");
for(i=0;i<30;i++)
scanf("%d",&age[i]);
for(i=0;i<30;i++)
{
if(age[i]>99)
d[10]++;
else
d[age[i]/10]++;
}
printf("額度按人數(shù):\n");
for(i=0;i<11;i++)
printf("%3d",d[i]);
}
32、 編寫函數(shù)fun,該函數(shù)的功能是:統(tǒng)計一行字符串中單詞的個數(shù),作為函數(shù)值返回。一行字符串在主函數(shù)中輸入,規(guī)定所有單詞由小寫字母組成,單詞之間由若干個空格格開,一行的開始沒有空格。
#include
#include
int fun(char *s)
{
int i=1,c=0;
while(s[i])
{
if(s[i]== &&s[i-1]!= )
c++;
i++;
}
return
鏈接地址:http://www.820124.com/p-12757583.html