资源描述
一
1. 求出10至1000之内能同时被2、3、7整除的数,并输出。
#include<stdio.h>
int main()
{int n;
for(n=10;n<=1000;n++)
{if(n%42==0)
printf("%d ",n);
}
printf("\n");
return 0;
}
2. 用switch语句编一程序,对于给定的一个百分制成绩,输出相应的五分制成绩,设:90分以上为‘A’,80~89分为‘B’,70~79分为‘C’,60~69分为‘D’,60分以下为‘E’。
#include<stdio.h>
int main()
{float score;
char grade;
scanf("%f",&score);
switch ((int)(score/10))
{
case 10:
case 9: grade='A';break;
case 8: grade='B';break;
case 7: grade='C';break;
case 6: grade='D';break;
case 5:
case 4:
case 3:
case 2:
case 1:
case 0:grade='E';break;
default:printf("error\n");
}
printf("%c\n",grade);
return 0;
}
3、 有10个数围成一圈,求相邻三个数之和的最小值。
#include<stdio.h>
int main()
{float a[10];
float t,b;
int i;
printf("qing shu ru 10 ge shu:\n");
for(i=0;i<=9;i++)
scanf("%f",&a[i]);
printf("\n");
t=a[0]+a[1]+a[9];
for(i=1;i<9;i++)
{b=a[i-1]+a[i]+a[i+1];
if(t>b)
t=b;
}
printf("The smallest number is:%6.2f\n",t);
return 0;
}
4. 编程判断输入的正整数是否既是5又是7的整倍数。若是,则输出yes;否则输出no。
#include<stdio.h>
int main()
{int n;
scanf("%d",&n);
if(n%5==0&&n%7==0)
printf("yes\n");
else printf("no\n");
return 0;
}
5. 一个数如果恰好等于它的因子之和,这个数就称为“完数”。例如6=1+2+3.编程找出1000以内的所有完数。
#include<stdio.h>
int main()
{
int m,s,i;
for(m=2;m<1000;m++)
{s=0;
for(i=1;i<m;i++)
if(m%i==0)
s=s+i;
if(s==m)
{printf("%d ,its factors are",m);
for(i=1;i<m;i++)
if(m%i==0)
printf("%d ",i);
printf("\n");
}
}
return 0;
}
法二
#include<stdio.h>
int main()
{
int m,i,s;
for(m=2;m<1000;m++)
{
s=1;
for(i=2;i<=m/2;i++)
{
if(m%i==0)
s=s+i;
}
if(s==m)
{
printf("%d is 完数 its factors are ",m);
for(i=1;i<=m;i++)
if(m%i==0)
printf("%d ",i);
printf("\n");
}
}
return 0;
}
二
1. 把100---200间的不能被3整除的数输出。
#include<stdio.h>
int main()
{
int n;
for(n=100;n<=200;n++)
if(n%3!=0)
printf("%3d\n",n);
return 0;
}
2. 编写一函数fun,实现矩阵(3行3列)的转置(即行列互换)。
#include<stdio.h>
#define N 3
float b[3][3];
float a[3][3];
int main()
{void fun(float a[][3]);
int i,j;
printf("qing shu ru shu zu:\n");
for(i=0;i<N;i++)
for(j=0;j<N;j++)
scanf("%f",&a[i][j]);
printf("\nyuan shu zu a:\n");
for (i=0;i<N;i++)
{for(j=0;j<N;j++)
{printf("%8.2f",a[i][j]);
}
printf("\n");
}
fun(a);
printf("zhuan zhi hou shu zu a:\n");
for(i=0;i<N;i++)
{for(j=0;j<N;j++)
printf("%8.2f",b[i][j]);
printf("\n");
}
return 0;
}
void fun(float a[][3])
{int i,j,t;
for(i=0;i<N;i++)
for(j=0;j<N;j++)
b[j][i]=a[i][j];
}
3. 从键盘输入100个整数,统计其中正数、负数及零的个数。
#include<stdio.h>
int main()
{int i,n,s1,s2,s3;
for(i=1,s1=0,s2=0,s3=0;i<=100;i++)
{scanf("%d",&n);
if(n>0) s1=s1+1;
if(n<0) s2=s2+1;
if(n==0) s3=s3+1;
}
printf("s1=%d s2=%d s3=%d\n",s1,s2,s3);
return 0;
}
4. 求1到100之间的奇数之和及偶数之和,并将二者输出。
#include<stdio.h>
int main()
{int i,s1=0,s2=0;
for(i=1;i<=100;i++)
{if(i%2==0)
s1=s1+1;
else s2=s2+1;
}
printf("s1=%d\ns2=%d\n",s1,s2);
return 0;
}
5. 编写一个函数,求6行、6列的二维数组全体元素中负数的个数。
#include <stdio.h>
int main()
{
int i,j,a[6][6],n=0;
printf("输入6*6数组:\n");
for(i=0;i<6;i++)
for(j=0;j<6;j++)
scanf("%d",&a[i][j]);
for(i=0;i<6;i++)
{for(j=0;j<6;j++)
if(a[i][j]<0)
n=n+1;
}
printf("n=%d\n",n);
return 0;
}
三
1. 编程:输出100~300中的素数及素数的个数
#include<stdio.h>
#include<math.h>
int main()
{
int n,k,i,m=0;
for(n=101;n<=300;n=n+2)
{k=sqrt(n);
for(i=2;i<=k;i++)
if(n%i==0)break;
if(i>=k+1)
{printf("%4d",n);
m=m+1;
if(m%10==0)printf("\n");
}
}
printf("\n");
printf("m=%3d\n",m);
return 0;
}
2. 有一数列,包含10个数,已按升序排好。现要求编一程序,从指定位置开始的n个数按逆序重新排列并输出新的完整数列(例:原数列:2,4,6,8,10,12,14,16,18,20,若要求把从第4个数开始的5个数按逆序重新排列,则得到新数列为2,4,6,16,14,12,10,8,18,20)要求在主函数中输入10个数及指定位置m的值,并输出新的数列,在被调函数中从指定位置开始的n个数按逆序重新排列。
#include<stdio.h>
int main()
{
int aa[10]={2,4,6,8,10,12,14,16,18,20},i;
void sort(int a[],int n);
sort(aa,5);
for(i=0;i<10;i++)
printf("%d ",aa[i]);
printf("\n");
return 0;
}
void sort(int a[],int n)
{int i,j,t;
for(i=3;i<n+3-1;i++)
for(j=i;j<n+3;j++)
if(a[i]<a[j])
{t=a[i];a[i]=a[j];a[j]=t;}
}
3. 编程:将一个数组中的数值按逆序重新存放。例如,原来顺序为8, 6, 5, 4, 1。要求改为1, 4, 5, 6, 8。
#include<stdio.h>
int main()
{int i,a[5];
for(i=0;i<5;i++)
scanf("%d",&a[i]);
for(i=4;i>=0;i--)
printf("%2d",a[i]);
printf("\n");
return 0;
}
l 4、编程:将字符串中的第m个字符开始的全部字符复制到另一个字符串。要求在主函数中输入字符串及m的值并输出复制结果,在被调函数中完成复制。
#include<stdio.h>
#include<string.h>
char d[80]="0";
int main()
{int cpy(char s[],int m);
char a[80];
int m;
gets(a);
scanf("%d",&m);
cpy(a,m);
puts(d);
return 0;
}
int cpy(char s[],int m)
{int i,j=0,t;
t=strlen(s);
for(i=m-1;i<t;i++,j++)
d[j]=s[i];
}
5. 编程:求1到100之间的奇数之和及偶数之和,并将二者输出
#include<stdio.h>
int main()
{
int i,s1=0,s2=0;
for(i=1;i<=100;i++)
{
if(i%2==0)
s1=s1+1;
else s2=s2+1;
}
printf("s1=%d\ns2=%d\n",s1,s2);
return 0;
}
6. 求6行、6列的二维数组全体元素中负数的个数。
#include <stdio.h>
int main()
{
int i,j,a[6][6],n=0;
printf("输入6*6数组:\n");
for(i=0;i<6;i++)
for(j=0;j<6;j++)
scanf("%d",&a[i][j]);
for(i=0;i<6;i++)
{for(j=0;j<6;j++)
if(a[i][j]<0)
n=n+1;
}
printf("n=%d\n",n);
return 0;
}
四
1. 有4名学生,每个学生考4门课,要求:写2个函数:(1)返回值为总平均分的函数(2)返回值为最低分的函数。在main()函数中输入每个学生4门课的成绩,调用以上2个函数,输出总平均分和最低分
#include<stdio.h>
#define N 4
int main()
{float aver(float m[4][4]);
float low(float n[4][4]);
float a[4][4],t,s,k;
int i,j;
printf("shu chu shu zu a:\n");
for(i=0;i<4;i++)
for(j=0;j<4;j++)
scanf("%f",&a[i][j]);
a[i][j]=k;
t=aver(a);
s=low(a);
printf("aver=%4f",t);
printf("main=%4f",s);
printf("\n");
return 0;
}
float aver(float m[4][4])
{int i,j;
float sum=0,aver;
for(i=0;i<4;i++)
for(j=0;j<4;j++)
sum=sum+m[i][j];
aver=sum/4;
return (aver);
}
float low(float n[4][4])
{int i,j;
float min=n[0][0];
for(i=0;i<4;i++)
for(j=0;j<4;j++)
{if(min>n[i][j])
min=n[i][j];
}
return (min);
}
2. 编程:把100---200间的不能被3整除的数输出。
#include<stdio.h>
int main()
{int m;
for(m=100;m<=200;m++)
{if(m%3!=0)
printf("%4d",m);
}
printf("\n");
return 0;
}
3. 输入10个整数,将其中最小的数与第一个数对换,把最大的数与最后一个数对换。要求:写3个函数:(1)输入10个数的函数,(2)交换处理的函数,(3)输出10个数的函数。在main()函数中调用以上3个函数。
#include<stdio.h>
int main()
{int input(int a[]);
int f(int a[]);
int output(int a[]);
int a[10];
input(a);
f(a);
output(a);
return 0;
}
int input(int a[])
{int i;
for(i=0;i<10;i++)
scanf("%d",&a[i]);
}
int f(int a[])
{int i,j,t,max=0,min=0;
for(i=1,j=0;i<10;i++,j++)
{if(a[max]<a[i])
max=i;
if(a[min]>a[j])
min=j;
}
t=a[max];a[max]=a[9];a[9]=t;
t=a[min];a[min]=a[0];a[0]=t;
}
int output(int a[])
{int i;
for(i=0;i<10;i++)
printf("%5d",a[i]);
printf("\n");
}
l 4 、设有10个学生的信息,包括学号、姓名和三门功课的成绩,试编写学生信息输入函数、学生信息输出函数,最后编写主函数,并在主函数中调用这些函数。
#include<stdio.h>
#define N 5
struct stu
{int num;
char name[20];
int score1;
int score2;
int score3;
}
stu[N];
int main ()
{int shuru();
int shuchu();
shuru();
shuchu();
}
int shuru()
{int i;
for(i=0;i<N;i++)
{printf("num=");
scanf("%d",&stu[i].num);
printf("name=");
scanf("%s",&stu[i].name);
printf("score1=");
scanf("%d",&stu[i].score1);
printf("score2=");
scanf("%d",&stu[i].score2);
printf("score=");
scanf("%d",&stu[i].score3);
}
printf("\n");
}
int shuchu()
{int i;
printf("xue sheng de xin xi:\n");
for(i=0;i<N;i++)
{printf("%5d%10s%10s%10d%10d%10d\n",stu[i].num,stu[i].name,stu[i].score1,
stu[i].score2,stu[i].score3);
}
printf("\n");
}
五
1. 从键盘输入10个整数,对其进行从小到大排序,将排序后的结果输出并保存到文件“DATA.DAT”中。
#include<stdio.h>
int main()
{int i,j,t,a[10];
printf("shu ru 10 ge shu;\n");
for(i=0;i<10;i++)
scanf("%d",&a[i]);
printf("\n");
for(j=0;j<9;j++)
for(i=0;i<9-j;i++)
if(a[i]>a[i+1])
{t=a[i];a[i]=a[i+1];a[i+1]=t;}
printf("shu chu xin pai lie:\n");
for(i=0;i<10;i++)
printf("%d",a[i]);
printf("\n");
return 0;
}
2. 从3*4的矩阵中求出最大值及所在的行号、列号,并将结果存入文件“DATA.DAT”中。
#include<stdio.h>
int main()
{int i,j,max,hang,lie,a[3][4];
for(i=0;i<3;i++)
for(j=0;j<4;j++)
scanf("%d",&a[i][j]);
max=a[0][0];
for(i=0;i<3;i++)
for(j=0;j<4;j++)
if(a[i][j]>max)
{max=a[i][j];
hang=i;
lie=j;
}
printf("max=%d\nhang=%d\nlie=%d\n",max,hang,lie);
return 0;
}
3. 编程:从键盘输入一行字符,将其中的大写字母改成小写字母存入磁盘文件“TEXT . TXT”中保存。
#include<stdio.h>
#include<string.h>
int main()
{char a[81],d[81];
int i,j,t=0;
gets(a);
t=strlen(a);
for(i=0,j=0;i<t;i++,j++)
{if(a[i]>='A'&&a[i]<='Z')
d[j]=a[i]+32;
}
for(j=0;j<t;j++)
printf("%c",d[j]);
printf("\n");
return 0;
}
l 4、编程:从键盘输入N个字符串,按字典顺序排序后输出,并将结果保存入“DATA.DAT”中。
#include<stdio.h>
#include<string.h>
#define N 3
int main()
{char str[N][81],t[81];
int i,j,k;
for(i=0;i<N;i++)
scanf("%s",str[i]);
for(i=0;i<N-1;i++)
{k=i;
for(j=i+1;j<N;j++)
if(strcmp(str[k],str[j])>0)
k=j;
{
strcpy(t,str[k]);
strcpy(str[k],str[i]);
strcpy(str[i],t);
}
}
for(i=0;i<N;i++)
printf("%c",str[i]);
printf("\n");
return 0;
}
法二
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
typedef struct {
char c[105];
}Line;
Line a[10];
int cmp(const void *x,const void *y)
{
char *m = ((Line*)x)->c;
char *n = ((Line*)y)->c;
return strcmp(m,n);
}
int main()
{
int L,M,i,x,y,ans;
for(i = 0;i < 10;i ++)
scanf("%s",a[i].c);
qsort(a,10,sizeof(a[0]),cmp);
for(i = 0;i < 10;i ++)
printf("%s\n",a[i].c);
return 0;
}
5. 键盘输入n个整数,统计其中正数、负数及零的个数,结果保存至“data.dat”文件中。
#include<stdio.h>
int main()
{int i,z=0,f=0,l=0,a[10];
for(i=0;i<10;i++)
{scanf("%d",&a[i]);
if(a[i]>0) z++;
else if(a[i]==0) l++;
else f++;
}
printf("zheng shu=%d\nfu shu=%d\nling=%d\n",z,f,l);
return 0;
}
6. 输入一行字符,分别统计出其中的英文字母、空格、数字和其他字符的个数,并将统计结果输出到磁盘文件“test”中保存#include<stdio.h>
int main()
{char c;
int z=0,k=0,s=0,q=0;
printf("qing shu chu yi hang zi fu:\n");
while((c=getchar())!='\n')
{if(c>='a'&&c<='z'||c>='A'&&c<='Z')
z++;
else if(c==' ')
k++;
else if(c>='0'&&c<='9')
s++;
else
q++;
}
printf("zi mu shu=%d\nkong ge shu=%d\nshu zi shu=%d\nqi ta zi fu=%d\n",
z,k,s,q);
return 0;
}。
5. 输出所有的“水仙花数”,所谓“水仙花数”是指一个3位数,其各位数字立方和等于该数本身。例如,153是一水仙花数,因为153=13+53+33
#include<stdio.h>
int main()
{int i,j,k,n;
printf("shu chu shui xian huan shu:\n");
for(n=100;n<1000;n++)
{
i=n/100;
j=n/10-i*10;
k=n%10;
if(n==i*i*i+j*j*j+k*k*k)
printf("%4d",n);
}
printf("\n");
return 0;
}
7. 求1+2+3+……+100。
#include<stdio.h>
int main()
{int n,sum=0;
for(n=1;n<=100;n++)
{sum=sum+n;}
printf("sum=%4d\n",sum);
return 0;
}
8. 给定一个一维数组a有N个元素,求最大值。
#include<stdio.h>
int main()
{int i,j,t,a[3]={5,8,3},max;
max=a[0];
for(i=0;i<3;i++)
{if(max<a[i]) max=a[i];}
printf("max=%d\n",max);
return 0;
}
9. 用选择法对10个数按从小到大的顺序排列。
#include<stdio.h>
int main()
{int i,j,min,t,a[11];
printf("enter data:\n");
for(i=0;i<10;i++)
{printf("a[%d]=",i);
scanf("%d",&a[i]);
}
printf("\n");
for(j=i+1;j<10;j++)
printf("%5d",a[i]);
printf("\n");
for(i=0;i<=9;i++)
{min=i;
for(j=i+1;j<=9;j++)
if(a[min]>a[j]) min=j;
t=a[i];
a[i]=a[min];
a[min]=t;
}
printf("\nthe sorted numbers:\n");
for(i=0;i<=9;i++)
printf("%5d",a[i]);
printf("\n");
return 0;
}
10. 对10个数依次赋值为0,1,2,3,4,5,6,7,8,9,要 求逆序输出。
#include<stdio.h>
int main()
{int i,a[10]={0,1,2,3,4,5,6,7,8,9};
printf("shun xu shu chu:\n");
for(i=0;i<10;i++)
printf("%4d",a[i]);
printf("\n");
printf("ni xu shu chu:\n");
for(i=9;i>=0;i--)
printf("%4d",a[i]);
printf("\n");
return 0;
}
11. 10个学生,每个学生3门课成绩,要求计算出每个同学的平均成绩并输出。
#include<stdio.h>
int main()
{float aver(float grade_A,float grade_B,float grade_C);
int i;
float grade_a,grade_b,grade_c,e;
for(i=0;i<=9;i++)
{scanf("%f%f%f",&grade_a,&grade_b,&grade_c);
e=aver(grade_a,grade_b,grade_c);
printf("%f\n",e);
}
return 0;
}
float aver(float grade_A,float grade_B,float grade_C)
{float sum,E;
sum=grade_A+grade_B+grade_C;
E=sum/3;
return (E);
}
12.编写函数void sort(int a[],int n),其功能是对a数组中前n个元素从小到大排序。要求:在main中输入a数组的10个元素,调用函数sort实现对a数组的排序。
#include<stdio.h>
int main()
{void sort(int x[],int n);
int a[10],i,*p;
p=a;
printf("enter array:\n");
for(i=0;i<10;i++)
scanf("%d",p++);
p=a;
sort(p,10);
printf("the sorted array:\n");
for(p=a,i=0;i<10;i++)
{printf("%d",*p);
p++;
printf("\n");
return 0;
}
void sort(int x[],int n)
{int i,j,k,t;
for(i=0;i<n-1;i++)
{k=i;
for(j=i+1;j<n;j++)
if(x[k]<x[i]) k=j;
t=a[i];
a[i]=a[k];
a[k]=t;}
}
13.输入一个不多于5位的正整数,将其各位数输出。
#include<stdio.h>
#include<math.h>
int main()
{int n,a,b,c,d,e;
printf("shu ru zheng shu:");
scanf("%d",&n);
if(n>99999||n<=0)
printf("data error\n");
else
{a=n/10000;
b=(n-a*10000)/1000;
c=(n-a*10000-b*1000)/100;
d=(n-a*10000-b*1000-c*100)/10;
e= n-a*10000-b*1000-c*100-d*10;
printf("you gao dao di ge wei shu fen bie shi:%2d%2d%2d%2d%2d",a,b,c,d,e);}
printf("\n");
return 0;
}
14.输入10个整数,找出其中的最大值、最小值。
#include<stdio.h>
int main()
{int i,a[10],max,min;
printf("shu ru 10 ge shu:\n");
for(i=0;i<10;i++)
scanf("%d",&a[i]);
max=a[0];min=a[0];
for(i=1;i<10;i++)
if(a[i]>max) max=a[i];
else if(a[i]<min) min=a[i];
printf("max=%2d\nmin=%2d",max,min);
printf("\n");
return 0;
}
15.编写一个函数int prime(int x),其功能是判断x是否为素数,如是返回1,否则返回0。在main函数中输入一个整数,判断其是否为素数。例如若输入17,则输出“17:yes”,若输入12,则输出“12:no”。
#include<stdio.h>
#include<math.h>
int main()
{int n;int prime(int x);
printf("please enter a number:");
scanf("%d",&n);
if(prime(n)) printf("\n%d:YES",n);
else printf("\n%d:NO",n);
printf("\n");
return 0;
}
int prime(int x)
{int p,i,k;
k=sqrt(x);
for(i=2;i<=k;i++)
if(x%i==0) break;
if(i>=k+1) p=1;
else p=0;
return (p);
}
16.编程:求3*3的矩阵的主对焦2线之和。
#include<stdio.h>
int main()
{int i,j,sum=0,a[3][3];
for(i=0;i<3;i++)
for(j=0;j<3;j++)
scanf("%d",&a[i][j]);
for(i=0;i<3;i++)
{sum+=a[i][i];}
printf("sum=%d\n",sum);
return 0;
}
19.求分数序列2/1,3/2,5/3,8/5/,13/8,21/13…..的前20项之和。
#include<stdio.h>
int main()
{float fun(int n);
int n=20;
float sum;
scanf("%d",&n);
printf("\n");
sum=fun(n);
printf("%f",sum);
}
float fun (int n)
{int i;
float t,a=2.0,b=1.0,s=0;
for(i=1;i<=n;i++)
{s=s+a/b;t=a;a=a+b;b=t;}
return (s);
}
展开阅读全文