C语言学习 编程经典例题(近年二级编程题真题)

    xiaoxiao2023-03-22  9

    1,201603编程题 编函数fun()实现:移动一位数组中的内容,若数组中有n个整数,要求把下标从p~n-1(p<n-1)的数组元素平移到数组的前面。 #include<stdio.h> #include<windows.h> #define N 80 void fun (int *w, int p, int n) { int i,j,t; for(i=1;i<=p;i++) { t=w[0]; for(j=0;j<n-1;j++) { w[j]=w[j+1]; } w[n-1]=w[0]; } } void main() { int a[N]={1,2,3,4,5,6,7,8,9,10,11,12,13,14,15}; int i,p,n=15; printf("The original data:\n"); for(i=0;i<n;i++) printf("%3d",a[i]); printf("\n\nEnter p:"); scanf("%d",&p); fun(a,p,n); printf("\nThe data after moving:\n"); for(i=0;i<n;i++) printf("%3d",a[i]); printf("\n\n"); Sleep(5000); } 2.201509编程题 函数fun()实现:a,b为两位数,将a中的十位和个位数依次放在c的千位和十位,b的十位和个位数依次放在c的个位和百位。 #include<stdio.h> #include<windows.h> void fun (int a,int b,long *c) { *c=(a/10)*1000+(a%10)*10+(b/10)+(b%10)*100; } int main() { int a,b; long c; printf("Input a,b:"); scanf("%d%d",&a,&b); fun(a,b,&c); printf("The result is: %ld",c); Sleep(10000); return 0; } 3.201503编程题 编写一个函数void fun(int tt[][],int pp[][]),tt指向一个M行N列的二维数组,求出二维数组每列中最大元素,并依次放在pp所指向的一维数组中。 #include<stdio.h> #include<stdlib.h> #include<conio.h> #define M 3 #define N 4 void fun(int tt[M][N],int pp[N]) { int i,j,k; for(i=0;i<N;i++); { for(j=0;j<M-1;j++) { if(tt[j][i]>=tt[j+1][i]) { k=tt[j+1][i]; tt[j+1][i]=tt[j][i]; tt[j][i]=k; } } pp[i]=tt[M-1][i]; } } void main() { int t[M][N]={{68,32,54,12},{14,24,88,58},{42,22,44,56}}; int p[N],i,j,k; system("CLS"); printf("The oringinal data is:\n"); for(i=0;i<M;i++); { for(j=0;j<N;j++) printf("%6d,",t[i][j]); printf("\n"); } fun(t,p); printf("\nThe result is: \n"); for(k=0;k<N;k++) printf("%4d",p[k]); printf("\n"); } 调试没错,生成的结果错误,原2维数组输出结果显现出错。等待解决。。。。。。。。。。 4.(C语言经典一百例) 有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少? #include<stdio.h> int main() { int i,j,k; printf("\n"); for(i=1;i<5;i++) { // 以下为三重循环 for(j=1;j<5;j++) { for (k=1;k<5;k++) { // 确保i、j、k三位互不相同 if (i!=k&&i!=j&&j!=k) { printf("%d,%d,%d\n",i,j,k); } } } } return 0; } 5. 企业发放的奖金根据利润提成。利润(I)低于或等于10万元时,奖金可提10%;利润高于10万元,低于20万元时,低于10万元的部分按10%提成,高于10万元的部分,可可提成7.5%;20万到40万之间时,高于20万元的部分,可提成5%;40万到60万之间时高于40万元的部分,可提成3%;60万到100万之间时,高于60万元的部分,可提成1.5%,高于100万元时,超过100万元的部分按1%提成,从键盘输入当月利润I,求应发放奖金总数. #include<stdio.h> int main() { double i; double a1,a2,a4,a6,a10,a; printf("你的净利润是:\n"); scanf("%lf",&i); a1=100000*0.1; a2=a1+100000*0.075; a4=a2+200000*0.05; a6=a4+200000*0.03; a10=a6+400000*0.015; if(i<=100000) { a=i*0.1; } else if(i<=200000) { a=a1+(i-100000)*0.075; } else if(i<=400000) { a=a2+(i-200000)*0.05; } else if(i<=600000) { a=a4+(i-400000)*0.03; } else if(i<=1000000) { a=a6+(i-600000)*0.015; } else if(i>1000000) { a=a10+(i-1000000)*0.01; } printf("提成为:a=%lf",a); printf("\n"); return 0; } 6.一个整数,它加上100后是一个完全平方数,再加上268又是一个完全平方数,请问该数是多少? #include<stdio.h> #include<math.h> int main () { long int i,x,y; for(i=0;i<100000;i++) { x= sqrt(i+100); y= sqrt(i+268); if((x*x==i+100) && (y*y==i+268)) { printf("\n%ld\n",i); } } return 0; } 编译出错,在math.h中sqrt定义是double __cdecl sqrt(_In_ double _X); 将x= sqrt(i+100),y= sqrt(i+268)中100改为100.0和268改为268.0。 7。输入某年某月某日,判断这一天是这一年的第几天? #include<stdio.h> int main() { int day,month,year,sum,leap; printf("\n请输入年,月,日.格式为:年,月,日(2015,12,10)\n"); scanf("%d,%d,%d",&year,&month,&day); switch(month) { case 1:sum=0;break; case 2:sum=31;break; case 3:sum=59;break; case 4:sum=90;break; case 5:sum=120;break; case 6:sum=151;break; case 7:sum=181;break; case 8:sum=212;break; case 9:sum=243;break; case 10:sum=273;break; case 11:sum=304;break; case 12:sum=334;break; default:printf("data error");break; } sum=sum+day; if(year%400==0 || (year%4==0 && year%100!=0)) { leap=1; } else { leap=0; } if(leap==1 && month>2) { sum=sum+1; } printf("这是这一年的第%d天。",sum); printf("\n"); return 0; } 8,输入三个整数x,y,z,请把这三个数由小到大输出 #include<stdio.h> int main() { int x,y,z,t; printf("请输入三个数字:\n"); scanf("%d,%d,%d",&x,&y,&z); if(x>y) { t=x; x=y; y=t; } if(x>z) { t=x; x=z; z=t; } if(y>z) { t=y; y=z; z=t; } printf("从小到大排序:%d,%d,%d\n",x,y,z); return 0; } 9,用*号输出字母C的图案 #include<stdio.h> int main() { printf("用*输出字母c!\n"); printf("****\n"); printf("*\n"); printf("*\n"); printf("****\n"); return 0; } 10,输出特殊图案,请在c环境中运行 #include<stdio.h> int main() { char a=176,b=219; printf("%c%c%c%c%c\n",b,a,a,a,b); printf("%c%c%c%c%c\n",a,b,a,b,a); printf("%c%c%c%c%c\n",a,a,b,a,a); printf("%c%c%c%c%c\n",a,b,a,b,a); printf("%c%c%c%c%c\n",b,a,a,a,b); return 0; } 注意: 字符共有256个。不同字符,图形不一样。 VC6.0下出现中文乱码(原因+解决方法): 176的16进制是B0,219的16进制是DB,0xB0DB是"佰"字的内码,所以输出的就是"佰"了。 主要原因是文件信息的代码页不同,我们所使用的操作系统中文状态下的代码页,要显示扩展的ASCII码需要在437 OEM-美国这个下面显示,这样就可以显示出你所希望的。具体修改控制台的默认代码页步骤如下: 1.点击运行界面左上角标题栏图标【c:\】,选择默认值一项 2.修改默认代码页,936(ANSI/OEM-简体中文GBK)为437 OEM-美国 3、关闭后重新运行一下即可 11,输出9*9口诀 #include<stdio.h> int main() { int i,j,result; printf("\n"); for (i=1;i<10;i++) { for(j=1;j<10;j++) { result=i*j; printf("%d*%d=%-3d",i,j,result); } printf("\n"); } } 12,要求输出国际象棋棋盘 #include<stdio.h> int main() { int i,j; for(i=0;i<8;i++) { for(j=0;j<8;j++) if((i+j)%2==0) { printf("%c%c",219,219); } else { printf(" "); } printf("\n"); } return 0; } 输出要按例10调试。 13,打印楼梯,同时在楼梯上方打印两个笑脸 #include<stdio.h> int main() { int i,j; printf("\1\1\n"); /*输出两个笑脸*/ for(i=1;i<11;i++) { for(j=1;j<=i;j++) printf("%c%c",219,219); printf("\n"); } return 0; } 输出要按例10调试
    转载请注明原文地址: https://ju.6miu.com/read-1188273.html
    最新回复(0)