大一下学期的一些编程题.docx
- 文档编号:30519749
- 上传时间:2023-08-16
- 格式:DOCX
- 页数:27
- 大小:21.18KB
大一下学期的一些编程题.docx
《大一下学期的一些编程题.docx》由会员分享,可在线阅读,更多相关《大一下学期的一些编程题.docx(27页珍藏版)》请在冰豆网上搜索。
大一下学期的一些编程题
第6章循环控制
1、输入两个正整数m和n,求其最大公约数和最小公倍数。
教师批改:
main()
{
inta,b,num1,num2,temp;
printf("pleaseinputtwonumbers:
\n");
scanf("%d,%d",&num1,&num2);
if(num1 { temp=num1; num1=num2; num2=temp; } a=num1;b=num2; while(b! =0)/*利用辗除法,直到b为0为止*/ { temp=a%b; a=b; b=temp; } printf("gongyueshu: %d\n",a); printf("gongbeishu: %d\n",num1*num2/a); } 2、输入一行字符,分别统计出其中英文字母,空格,数字和其它字符的个数。 教师批改: main() { charc; intletters=0,space=0,digit=0,others=0; printf("pleaseinputsomecharacters\n"); while((c=getchar())! =‘\n‘) { if(c>=‘a‘&&c<=‘z‘||c>=‘A‘&&c<=‘Z‘) letters++; elseif(c==‘‘) space++; elseif(c>=‘0‘&&c<=‘9‘) digit++; elseothers++; } printf("allinall: char=%dspace=%ddigit=%dothers=%d\n",letters,space,digit,others); } 3、求Sn=a+aa+aaa+……+aa……a之值,n由键盘输入。 教师批改: #include main() { longinta=1,s=0,b=0; intn,j; printf("pleaseinputanumber: \n"); scanf("%d",&n); for(j=0;j<=n-1;j++) { b=b+a*pow10(j); s=s+b; } printf("%8ld",s); } 4、一个数如果恰好等于它的因子之和,这个数就称为“完数”。 例如,6的因子为1、2、3,而6=1+2+3,因此6是“完数”。 编程序找出1000以内的所有“完数”,并按下面格式输出其因子: 6bitfactorsare1,2,3 教师批改: 方法一: main() { intm,s,i; for(m=2;m<1000;m++) { s=0; for(i=1;i if((m%I)==0)s=s+i; if(s==m) { printf("%d是一个完数,它的因子是",m); for(i=1;i printf("\n"); } } } 方法二: main() { intk[11];inti,a,n,s; for(a=2;a<=1000;a++) { n=0; s=a; for(i=1;i if((a%i)==0) { n++; s=s-i; k[n]=i; } if(s==0)printf("\n%d是一个完数,它的因子是: ",a); for(i=1;i printf("%d\n,",k[n]); } } 5、每个苹果0.8元,第一天买2个苹果,第二天开始,每天买前一天的2倍,直至购买的苹果个数达到不超过100的最大值。 编写程序求每天平均花多少钱? 教师批改: main() { intday=0,buy=2; floatsum=0.0,ave; do{ sum+=0.8*buy; day++;buy*=2 }while(buy<=100); ave=sum/day; printf(”%f,ave); } 6、试编程序,找出1至99之间的全部同构数。 同构数是这样一组数: 它出现在平方数的右边。 例如;5是25右边的数,25是625右边的数,5和25都是同构数。 教师批改: main() { inti; for(i=1;i<100;i++) if(i*i%10==i||i*i%100==i) printf("%3d",i); } 93、编写程序,从键盘输入6名学生的5门成绩,分别统计出每个学生的平均成绩。 教师批改: main() { inti,j; floatg,sum,ave; for(i=1;i<=6;i++) { sum=0.0; for(j=1;j<=5;j++) { scanf("%f",g); sum=sum+g; } ave=sum/5; printf("No.%dave=%5.2f\n",i,ave); } } 7、输入两个正整数m和n,求其最大公约数和最小倍数。 教师批改: voidmain() { inta,b,p,t,r; printf("inputab: "); scanf("%d,%d",&a,&b); p=a*b; if(b>a){t=a;a=b;b=t;} while((r=a%b)! =0) { a=b; b=r; } printf("max_gy=%d\n",b); printf("min_gb=%d\n",p/b); } 8、求Sn=a+aa+aaa+...+aaa...a(n个a)之值,其中a是一个数字,n表示a的位数,例如: 2+22+222+2222+22222(此时n=5)。 n由键盘输入。 教师批改: voidmain() {inti,a,n; longs=0,sum=0; clrscr(); printf("inputa,n: \n"); scanf("%d,%d",&a,&n); for(i=1;i<=n;i++) {s=s*10+a; sum=sum+s; } printf("a=%dn=%dsum=%ld",a,n,sum); } 9、输出所有的“水仙花数”,所谓“水仙花数”数是指一个3位数,其各位数字立方和等于该数本身。 例如: 153=1*1*1+5*5*5+3*3*3。 教师批改: #include"stdio.h" voidmain() { inti,j,k,n; for(n=100;n<1000;n++) { i=n/100; j=n/10%10; k=n%10; if(n==i*i*i+j*j*j+k*k*k) printf("\n%5d",n); } } 10、一球从100m高度自由落下,每次落地后反跳回原高度的一半,再落下。 求它在第10次落地时,共经过多少m? 第10次反弹多高? 教师批改: #include voidmain() { floats=100.0,sum=s; inti; for(i=1;i<=8;i++) { s=s/2.0; sum+=2*s; } sum-=s; printf("sum=%f,s=%f",sum,s); } 11、比赛双方各出三人,甲队为a,b,c三人,乙队为x,y,z三人。 已抽签决定比赛名单。 有人向队员打听比赛的名单。 a说他不和x比,c说他不和x,z比。 编一程序找出三对赛手的名单。 教师批改: voidmain() { chari,j,k;/*i是a的对手;j是b的对手;k是c的对手*/ for(i=‘x‘;i<=‘z‘;i++) for(j=‘x‘;j<=‘z‘;j++) if(i! =j) for(k=‘x‘;k<=‘z‘;k++) if(i! =k&&j! =k) if(i! =‘x‘&&k! =‘x‘&&k! =‘z‘) printf("order: \na--%c\tb--%c\tc--%c\n",i,j,k); } 第7章数组 1、通过循环按行顺序为一个5×5的二维数组a赋1到25的自然数,然后输出该数组的左下半三角。 试编程。 教师批改: #include main() { inta[5][5],i,j,n=1; for(i=0;i<5;i++) for(j=0;j<5;j++) a[i][j]=n++; printf("Theresultis: \n"); for(i=0;i<5;i++) { for(j=0;j<=i;j++) printf("%4d",a[i][j]); printf("\n"); } } 2、数组a包括10个整数,把a中所有的后项除以前项之商取整后存入数组b,并按每行3个元素的格式输出数组b。 试编程。 教师批改: #include main( ) { int a[10],b[10],i ; for(i=0; i<10; i++) scanf("%d",a[i]); for(i=1; i<10; i++) b[i]=a[i]/a[i-1]; for(i=1; i<10; i++) { printf("%3d",b[i]); if(i%3==0) printf("\n"); } } 3、求一个3×3的整型矩阵对角线元素之和。 教师批改: #include"stdio.h" #defineN3 main() { staticinta[N][N]; inti,j,sum=0; for(i=0;i for(j=0;j scanf("%d",&a[i][j]); for(i=0;i for(j=0;j if((i==j)||(i+j==N-1)) sum+=a[i][j]; printf("sum=%d\n",sum); } 4、已知一个已排好序的数组,要求输入一个数后,按原来排序的规律将它插入数组中。 教师批改: #include"stdio.h" #defineN10 main() { inta[N],i,x; printf("\n\ninput%dnumber: \n",N-1); for(i=0;i<=N-2;i++) scanf("%d",&a[i]); printf("insertanumber: "); scanf("%d",&x); i=N-2; while(i>=0) if(a[i]>x) { a[i+1]=a[i]; i--; } elsebreak; a[i+1]=x; for(i=0;i<=N-1;i++) printf("%3d",a[i]); printf("\n"); } 5、将一个数组中的值按逆序重新存放。 例如: 原来存储顺序为8,6,5,4,1。 要求改为1,4,5,6,8。 教师批改: #include"stdio.h" #defineN10 main() { inta[N],i,t; printf("input%dnumber: \n",N); for(i=0;i scanf("%d",&a[i]); for(i=0;i { t=a[i]; a[i]=a[N-1-i]; a[N-1-i]=t; } for(i=0;i printf("%d",a[i]); } 6、输出以下杨辉三角形(要求输出10行)。 1 11 121 1331 14641 教师批改: #defineN10 main() { inta[N][N]; inti,j; for(i=0;i for(j=0;j<=i;j++) if(i==j||j==0) a[i][j]=1; else a[i][j]=a[i-1][j-1]+a[i-1][j]; for(i=0;i { for(j=0;j<=i;j++) printf("%4d",a[i][j]); printf("\n"); } } 7、编写一个程序,将字符数组s2中的全部字符复制到字符数组s1中。 不要用strcpy函数。 复制时,’\0’也要复制过去。 ’\0’后面的字符不复制。 教师批改: #include"stdio.h" #include"string.h" #defineN20 main() { charstr1[N],str2[N]; inti=0,len; printf("inputstr2: "); gets(str2); for(i=0;str2[i]! =‘\0‘;i++) str1[i]=str2[i]; str1[i]=‘\0‘; printf("outputstr1: "); puts(str1); } 8、编写程序,将两个字符串连接起来,不要用strcat函数。 教师批改: #include"stdio.h" #include"string.h" #defineN40 #defineM20 main() { charstr1[N],str2[M]; inti,len1,len2; printf("inputstr1(<40): ");gets(str1); printf("inputstr2(<20): ");gets(str2); len1=strlen(str1); for(i=0;str2[i]! =‘\0‘;i++) str1[len1+i]=str2[i]; str1[len1+i]=‘\0‘; printf("outputstr1: "); puts(str1); } 9、用筛选法求100以内的素数 教师批改: #include #defineN101 main() { inti,j,num=0,a[N]; printf("thenumbersare: \n"); for(i=2;i for(i=0;i for(j=0;j<=sqrt(i);j++) { if(a[i]! =0&&a[j]! =0) if(a[i]%a[j]==0) a[i]=0; } for(i=0;i { if(a[i]! =0) { printf("%4d",a[i]); num++; if(num%5==0) printf("\n"); } } } 10、用选择法对10个整数排序(从小到大)。 教师批改: main() { inti,j,min,temp,a[11]; printf("Enterdata: ",\n); for(i=1;i<=10;i++) { printf("a[%d]=",i); scanf("%d",&a[i]); } printf("\n"); for(i=1;i<=10;i++)printf("%5d",a[i]); printf("\n"); for(i=1;i<=9;i++) { min=i; for(j=i+1;j<=10;j++) if(a[min]>a[j])min=j; temp=a[i]; a[i]=a[min]; a[min]=temp; } printf("\nThesortednumbers: \n"); for(i=1;i<=10;i++) printf("%5d",a[i]); } 11、求一个3×3的整型矩阵对角线元素之和。 教师批改: main() { inti,j,a[3][3],s=0; printf("Pleaseinput9numberstothearray: \n"); for(i=0;i<3;i++) for(j=0;j<3;j++) scanf("%d",&a[i][j]); for(i=0,j=0;i<3&&j<3;i++,j++) s=s+a[i][j]; printf("thenumbersis%d",s); } 12、将一个数组中的值按逆序重新存放。 教师批改: #defineN10 main() { inttem,i,j; inta[N]; printf("Pleaseinput%dnumbers: \n",N); for(i=0;i scanf("%d",&a[i]); printf("thesourcearrayis: \n"); for(i=0;i printf("%d",a[i]); for(i=0;i<(N/2+1);i++) { tem=a[i]; a[i]=a[N-i-1]; a[N-i-1]=tem; } printf("\nthenewarrayis: \n"); for(i=0;i printf("%d",a[i]); } 13、找出一个二维数组中的鞍点,即该位置上的元素在该行上最大,在该列上最小。 也可能没有鞍点。 教师批改: #defineN10 #defineM10 main() { inti,j,k,m,n,flag1,flag2,a[N][M],max,maxi,maxj; printf("\n输入行数n: "); scanf("%d",&n)printf("\n输入列表m: "); scanf("%d",&m); for(i=0;i<=n;i++){ printf("第%d行? \n",i); for(j=0;j scanf("%d",&a[i][j]); } for(i=0;i<=n;i++){ for(j=0;j printf("%5d",a[i][j]); printf("\n"); } flag2=0; for(i=0;i<=n;i++){ max=a[i][0]; for(j=0;j if(a[i][j]>max) { max=a[i][j]; maxj=j; } for(k=0;flag1=1;k if(max>a[k][maxj])flag1=0; if(flag1) { printf("\n第%d行,第%d列的%d是鞍点\n",i,maxj,max); flag2=1; } } if(! flag2) printf("\n矩阵中无鞍点! \n"); } 14、有15个数按由大到小的顺序存放在一个数组中,输入一个数,要求用折半查找法找出该数是数组中第几个元素的值。 如果该数不在数组中,则打印出“无此表”。 教师批改: #include #defineN15 main() { inti=1,j,number,top,bott,mid,loca,a[N],flag=1,sign=1; charc; printf("Enterdata: \n"); scanf("%d",&a[0]; while(i { scanf("%d",&a[i]); if(a[i]>=a[i-1])i++; elseprintf("Enterthisdataagain: "); } printf("\n"); for(i=0;i printf("%4d",a[i]); printf("\n"); flag=1; while(flag) { printf("Imputnumbertolookfor: "); scanf("%d",&number); loca=0; top=0; bott=N-1; if((numbera[N-1])) loca=1; while(sign==1)&&(top<=bott) { mid=(bott+top)/2; if(number==a[mid]) { loca=mid; printf("Find%d,itspositionis%d\n",number,loca+1); sign=0; }
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 一下 学期 一些 编程