资源描述
C语言上机程序题
//vc1
//prog1.cpp
//设计一个程序,从键盘输入三个整数,按由小到大的顺序输出。
#include <stdio.h>
main()
{
int a,b,c,temp;
scanf("%d%d%d",&a,&b,&c);
if(a>b)
{
temp=a;
a=b;
b=temp;
}
if(b>c)
{
temp=b;
b=c;
c=temp;
}
if(a>c)
{
temp=a;
a=c;
c=temp;
}
printf("%d %d %d\n",a,b,c);
}
//vc1
//prog2.cpp
//求1+3+5+...+95+97+99的和。
#include <stdio.h>
main()
{
int i,s=0;
for(i=1;i<100;i=i+2)
s+=i;
printf("%d",s);
}
//vc1
//prog3.cpp
//写一个函数,从键盘输入一个整数,如果该整数为素数,则输出“此整数为素数”,否则输出“整数非素数”。(注:要求从主函数输入整数)
#include <stdio.h>
int fun(int m)
{
int i,j=1;
for(i=2;i<=m/2;i++)
{
if(!(m%i))
{j=0;break;}
else
j=1;
}
return j;
}
main()
{
int m;
while(1)
{
scanf("%d",&m);
if(fun(m))
printf("此整数为素数");
else
printf("整数非素数");
}
}
//vc2
//prog1.cpp
//从键盘输入10个整数,保存在一个数组中,将这10个数逆序输出,然后求这10个数的和然后输出。
#include <stdio.h>
main()
{
int a[10],i,s=0;
for(i=0;i<10;i++)
{
scanf("%d",&a[i]);
s+=a[i];
}
for(i=9;i>=0;i--)
printf("%d ",a[i]);
printf("\n%d",s);
}
//vc2
//prog2.cpp
//输入N个国家的英文名,要求按字母的先后顺序排列,并按照顺序输出。
#include<stdio.h>
#include<string.h>
void main()
{
char a[100][100]={0},b[100]={0};
int n,i,j;
for(n=0;n<100;n++)
{
gets(a[n]);
if(a[n][0]=='0')
break;
}
for(i=1;i<=n;i++)
for(j=0;j<n-i;j++)
{
if(strcmp(a[j],a[j+1]))
{
strcpy(b,a[j]);
strcpy(a[j],a[j+1]);
strcpy(a[j+1],b);
}
}
for(i=0;i<n;i++)
puts(a[i]);
}
//vc2
//prog2.cpp
//输入N个国家的英文名,要求按字母的先后顺序排列,并按照顺序输出。
#include<stdio.h>
#include<string.h>
void main()
{
char a[100][100]={0},b[100]={0};
int n,i,j;
for(n=0;n<100;n++)
{
gets(a[n]);
if(a[n][0]=='0')
break;
}
for(i=1;i<n;i++)
for(j=0;j<n-i;j++)
{
if(strcmp(a[j],a[j+1])>0)
{
strcpy(b,a[j]);
strcpy(a[j],a[j+1]);
strcpy(a[j+1],b);
}
}
for(i=0;i<n;i++)
puts(a[i]);
}
//vc2
//prog3.cpp
/*某年级共有4个班,每班各有30名学生,
有6个科目的考试成绩,要求输出每门课程最高分的学生、
学号和姓名,并计算各班每个学生的平均成绩并输出。*/
#include<stdio.h>
#define cla 4
#define stu 30
#define sub 6
main()
{
int i,j,k,m,n,h;
float a[cla][stu][sub],ave[cla][stu],t,max;
for(i=0;i<cla;i++)
{
for(j=0;j<stu;j++)
{
t=0;
for(k=0;k<sub;k++)
{
printf("请输入第%d个班学号为%d的学生的第%d科的成绩\n",i+1,j+1,k+1);
scanf("%f",&a[i][j][k]);
t=t+a[i][j][k];
}
ave[i][j]=t/sub;
}
}
for(k=0;k<sub;k++)
{
max=0.0;
for(i=0;i<cla;i++)
{
for(j=0;j<stu;j++)
{
if(a[i][j][k]>max)
{
max=a[i][j][k];
m=i,n=j,h=k;
}
}
}
printf("第%d科成绩的最高分是第%d个班学号为%d的人,成绩为%f",h+1,m+1,n+1,max);
}
for(i=0;i<cla;i++)
{
for(j=0;j<stu;j++)
{
printf("第%d班学号为%d的学生的平均分为%f",i+1,j+1,ave[i][j]);
}
}
}
//vc3
//prog1.cpp
//求从键盘上输入的10个数据(实数)中的最大值,并求和。
#include <stdio.h>
main()
{
int a[10],i,m=0,s=0;
for(i=0;i<10;i++)
{
scanf("%d",&a[i]);
if(m<a[i])
m=a[i];
s+=a[i];
}
printf("最大值是%d\n总和是%d\n",m,s);
}
//vc3
//prog2.cpp
//给出三角形的三边A,B,C,求三角形的面积。(应先判断三边是否构成三角形)
#include <stdio.h>
#include <math.h>
int check(float a,float b,float c)
{
int j;
if((a+b>c)&&(a-b<c)&&(b-a<c))
j=1;
else j=0;
return j;
}
main()
{
float a,b,c;
float s,p;
scanf("%f%f%f",&a,&b,&c);
if(check(a,b,c))
{
p=(a+b+c)/2;
s=sqrt(p*(p-a)*(p-b)*(p-c));
printf("%f\n",s);
}
else
printf("不能构成三角形");
}
//vc3
//prog3.cpp
//编写程序求一个字符串的第n个字符开始、长度为m的子串
#include <stdio.h>
main()
{
char a[100],b[100]={'0'};
int m,n,i,j;
gets(a);
printf("请输入首位数,位数\n");
scanf("%d%d",&m,&n);
for(i=m-1,j=0;i<n+m-1;i++,j++)
b[j]=a[i];
puts(b);
}
//vc4
//prog1.cpp
//猜数游戏,假如设定一个整数m=123,然后让其他人从键盘上猜该数字,如果猜对,输出“RUGHT”,如果猜错,则输出“WRONG”,并且指出设定的数字比输入的数字大还是小
#include <stdio.h>
main()
{
int m=123,a;
while(1)
{
printf("请输入您的猜测:\n");
scanf("%d",&a);
if(a==m)
{
printf("RIGHT");
break;
}
else
{
printf("WRONG");
if(a>m)
printf("\n该数字比您输入的小!");
else
printf("\n该数字比您输入的大!");
}
}
}
//vc4
//prog2.cpp
//编写程序,用于统计从键盘输入的字符串中的元音字母的个数。
#include <stdio.h>
#include <string.h>
main()
{
char a[100];
int i,s=0;
gets(a);
for(i=0;i<strlen(a);i++)
{ if(a[i]=='a'||a[i]=='e'||a[i]=='i'||a[i]=='o'||a[i]=='u'||a[i]=='A'||a[i]=='E'||a[i]=='I'||a[i]=='O'||a[i]=='U')
s++;
}
printf("%d",s);
}
//vc4
//prog3.cpp
//编写程序求1-100中所有同构数的个数(一个自然数的平方的末几位与该数相同时,该数就为同构数,如25^2=625)
#include <stdio.h>
main()
{
int i,j=0;
for(i=1;i<=100;i++)
{
if((i*i)%1000%100==i||(i*i)%1000%100%10==i)
{printf("%d ",i);
j++;}
}
printf("\n%d",j);
}
//vc5
//prog1.cpp
//从键盘接受一个整数X,判断X是否为含有因子7的整数,如是,则输出“YES”,否则输出“NO”
#include <stdio.h>
main()
{
int x;
scanf("%d",&x);
if(x%7||x==0)
printf("NO");
else
printf("YES");
}
//vc5
//prog2.cpp
//编写一个密码检测的程序,在执行程序时,要求用户输入密码(标准密码自己预先设定),然后通过字符串比较函数比较输入密码和标准密码是否相等,若当等,则显示“口令正确”,并转去执行后续程序,若不想等,重新输入,3次都不相等则终止程序的执行。要求自己编写一个字符串比较函数,而不使用系统的strcmp函数。
#include <stdio.h>
#include <string.h>
#include<stdlib.h>
int cmp(char a[],char b[])
{
int i,j,n;
i=strlen(a)>strlen(b)?strlen(a):strlen(b);
for(n=0;n<i;n++)
{ if(a[n]==b[n])
j=1;
else
j=0;
}
return j;
}
main()
{
char a[100],b[100];
int i;
printf("请设定密码:\n");
gets(a);
system("CLS");
system("PAUSE");
for(i=0;i<3;i++)
{
printf("请输入密码:\n");
gets(b);
if(cmp(a,b))
{
printf("口令正确!");
break;
}
else
{
printf("口令错误!您还有%d次机会!",2-i);
}
}
}
//vc5
//prog3.cpp
//编写实现求1!+2!+...+10!.
#include <stdio.h>
int fun(int n)
{
long i,s=1;
for(i=1;i<=n;i++)
s*=i;
return s;
}
main()
{
int i,n=0;
for(i=1;i<=10;i++)
n+=fun(i);
printf("1!+2!+...+10!=%d",n);
}
//vc6
//prog1.cpp
//编写程序,能对一给定的3*4的矩阵,求出其中的最大元素之及所在的行列号。
#include<stdio.h>
main()
{
int a[3][4]={{23,4,15,98},{122,-3441,29,33},{123,1,-99,21}};//这里自己修改
int i,j,s=a[0][0],m=0,n=0;
for(i=0;i<3;i++)
{
for(j=0;j<4;j++)
printf("%d\t",a[i][j]);
printf("\n");
}
for(i=0;i<3;i++)
{ for(j=0;j<4;j++)
{
if(s<a[i][j])
s=a[i][j],m=i,n=j;
}
}
printf("最大元素是%d,位于第%d行第%d列",s,m+1,n+1);
}
//vc6
//prog2.cpp
//求2000中含有5的因子的个数。
#include<stdio.h>
main()
{
int i,j,k,m,s=0;
for(i=1;i<=2000;i++)
{
if(2000%i==0)
{
m=i;
for(j=0;j<3;j++)
{
if(m%10==5)
{s++;break;}
else
m=m/10;
}
}
}
printf("%d",s);
}
//vc6
//prog3.cpp
//求任意一个小于65535的正整数的逆序数,并判断该数是否为回文数。
#include<stdio.h>
#include<string.h>
main()
{
char a[100],b[100]={'0'};
int i,m;
printf("请输入一个小于65535的正整数\n");
gets(a);
m=strlen(a);
for(i=0;i<m;i++)
b[m-i-1]=a[i];
puts(b);
if(strcmp(a,b)==0)
printf("该数是回文数\n");
else
printf("该数不是回文数\n");
}
//vc7
//prog1.cpp
//给出一个不多于5位的正整数,要求:求出其位数,分别打印每一位数字,最后按逆序打印出这个正整数
#include<stdio.h>
#include<string.h>
main()
{
char a[100],b[100]={'0'};
int i,m;
printf("请输入一个小于5位的正整数\n");
gets(a);
m=strlen(a);
for(i=0;i<m;i++)
{
printf("%c ",a[i]);
b[m-i-1]=a[i];
}
puts(b);
}
//vc7
//prog2.cpp
//求一个4行4列矩阵主对角线元素之和。
#include<stdio.h>
main()
{
int i,j,m=0,a[4][4]={1,23,7,-12,56,1,12,-88,34,177,1,46,14,56,-89,1};
for(i=0;i<4;i++)
{ for(j=0;j<4;j++)
{
printf("%d\t",a[i][j]);
if(i==j)
m+=a[i][j];
}
printf("\n");
}
printf("主对角线元素之和是%d\n",m);
}
//vc7
//prog3.cpp
//编写一个程序,判断从键盘输入的两个字符串是否相同,若相同则输出“字符串相同”,否则输出“字符串不同”。
#include<stdio.h>
#include<string.h>
main()
{
char a[100],b[100];
printf("请输入字符串1:\n");
gets(a);
printf("请输入字符串2:\n");
gets(b);
if(strcmp(a,b)==0)
printf("字符串相同!");
else
printf("字符串不同!");
}
//vc8
//prog1.cpp
//输出100-200之间,能被3整除,但是不能被7整除的数。
#include<stdio.h>
main()
{
int i;
for(i=100;i<=200;i++)
if(i%3==0&&i%7!=0)
printf("%d\n",i);
}
//vc8
//prog2.cpp
//将一个月份数字转换成月份的英文名称.
#include<stdio.h>
main()
{
int i;
printf("请输入月份(1-12):\n");
scanf("%d",&i);
switch(i)
{
case 1:printf("January\n");break;
case 2:printf("February\n");break;
case 3:printf("March\n");break;
case 4:printf("April\n");break;
case 5:printf("May\n");break;
case 6:printf("June\n");break;
case 7:printf("July\n");break;
case 8:printf("August\n");break;
case 9:printf("September\n");break;
case 10:printf("Octobery\n");break;
case 11:printf("November\n");break;
case 12:printf("December\n");break;
default:printf("error!\n");break;
}
}
//vc8
//prog3.cpp
//编写一程序,用简单选择排序实现对五个整数的排序(从小到大),排序的思路:首先从n个整数中选出值最大的,将它交换到第一个元素位置,再从剩余的n-1个整数中选出值最大的整数,将它交换到第二个元素的位置,重复上述操作直到排序成功.
#include<stdio.h>
main()
{
int i,j,temp1,temp2,a[5]={542,-14,90,-18,83};
printf("排序之前的数组为: ");
for(i=0;i<5;i++)
printf("%d ",a[i]);
for(i=0;i<5;i++)
{ temp1=a[i];
for(j=i;j<5;j++)
{
if(temp1>a[j])
{
temp1=a[j];
a[j]=a[i];
a[i]=temp1;
}
}
}
printf("\n排序后的数组为: ");
for(i=0;i<5;i++)
printf("%d ",a[i]);
}
//vc10
//prog1.cpp
//从键盘输入一学生的成绩,判断学生成绩等级,如果成绩在90-100,等级为A,成绩在80-89,成绩为B,成绩在70-79,等级为C,成绩在60-69,等级为E,成绩小于60,等级为E.
#include<stdio.h>
main()
{
int i;
printf("请输入学生成绩(0-100):\n");
scanf("%d",&i);
if(i>=100||i<=0)
printf("ERROR!\n");
else
{
switch(i/10)
{
case 9:printf("A\n");break;
case 8:printf("B\n");break;
case 7:printf("C\n");break;
case 6:printf("D\n");break;
default:printf("E\n");break;
}
}
}
//vc10
//prog2.cpp
//输出100-1000间的全部素数;
#include<stdio.h>
main()
{
int i,j,s;
for(i=100;i<=1000;i++)
{
for(j=2;j<i/2;j++)
if(i%j==0) break;
if(j==i/2)
printf("%d ",i);
}
}
//vc10
//prog3.cpp
//编写程序,求出从键盘输入的字符串的长度(不能使用strlen()函数,要求用指针的知识.)
#include<stdio.h>
#include<string.h>
int len(char a[])
{
int i;
char *p=a;
for(i=0;i<10000;i++,*p++)
{ if(*p=='\0')
break;
}
return i;
}
void main()
{
char a[1000];
gets(a);
printf("字符串长度为%d",len(a));
}
//vc11
//prog1.cpp
//在主函数中从键盘输入若干个整数放入数组中,用0结束输入,并放在最后一个元素中,下列程序中,fun函数的功能是:计算数组元素中值为正整数的平均值(不含0),
//例如:数组中的元素中的值依次为39,-47,21,2,-8,15,9;则程序的运行结果为19.250000.请改编fun函数,使他能得出正确的结果.
#include<conio.h>
#include<stdio.h>
double fun (int x[])
{
int i,j=0;
double s=0;
for(i=0;i<100;i++)
{
if(x[i]>0)
{
s+=x[i];
j++;
}
}
return s/j;
}
main()
{
int x[1000],int i=0;
printf("\nPlease enter some data (end with 0): ");
do
{ scanf("%d",&x[i]);}while(x[i++]!=0);
printf("%f\n",fun(x));
}
//vc11
//prog2.cpp
//编程,将一个数字字符串转换成一个整数(不得调用c语言提供的将字符串转换为整数的函数.)例如,若输入字符串"-1234",则函数把它转换成整数值-1234.
#include<stdio.h>
#include<string.h>
int change(char a)
{
int i;
switch(a)
{
case '0':i=0;break;
case '1':i=1;break;
case '2':i=2;break;
case '3':i=3;break;
case '4':i=4;break;
case '5':i=5;break;
case '6':i=6;break;
case '7':i=7;break;
case '8':i=8;break;
case '9':i=9;break;
}
return i;
}
int fun(char x[])
{
int i,j,k,n,s,m=0;
if(x[0]=='-')
{i=1;j=-1;k=strlen(x);}
else
{i=0;j=1;k=strlen(x);}
for(i;i<k;i++)
{
s=change(x[i]);
for(n=0;n<k-i-1;n++)
s*=10;
m+=s;
}
return m*j;
}
main()
{
char a[100];
gets(a);
printf("\n%d",fun(a));
}
}
//vc11
//prog3.cpp
//百马驮担问题,有100匹马,驮100担货,大马驮3担,中马驮2担,两匹小马驮1担,编程计算有多少种驮法.
#include<stdio.h>
void main()
{
int b,m,l,i;
for(b=0;b<=33;b++)
for(m=0;m<=50;m++)
{
l=100-b-m;
If((b*3+m*2+l/2==100)&&(l%2==0))
printf("大马为%d匹,中马为=%d匹,小马为=%d匹,总驮担%d担\n",b,m,l,b*3+m*2+l/2);
}
}
//vc12
//prog1.cpp
//编写fun函数,它的功能是:根据以下公式求P的值,结果由函数值带回,m与n为两个正整数且要求m>n.P=m!/n!(m-n)!
#include <conio.h>
#include <stdio.h>
float fun(int m,int n)
{
int i;
float s1,s2,s3;
s1=s2=s3=1;
if(m>n)
{
for(i=1;i<=m;i++)
s1*=i;
for(i=1;i<=n;i++)
s2*=i;
for(i=1;i<=m-n;i++)
s3*=i;
}
return s1/(s2*s3);
}
main()
{
printf("p=%f\n",fun(12,8));
}
//vc12
//prog2.cpp
//求出1到1000之内能被7或11整除,但不能同时被7和11整除的所有整数,并求这些数的个数.
#include<stdio.h>
main()
{
int i,s;
for(i=1,s=0;i<=1000;i++)
if((i%7==0||i%11==0)&&!(i%7==0&&i%11==0))
{
printf("%d ",i);
s++;
}
printf("\n总数为%d",s);
}
//vc12
//prog3.cpp
//编程求一个3*3矩阵对角线元素之和
#include<stdio.h>
main()
{
int a[3][3],i,j;
printf("请输入一个3*3的矩阵\n");
for(i=0;i<3;i++)
{
for(j=0;j<3;j++)
scanf("%d",&a[i][j]);
}
for(i=0;i<3;i++)
{
for(j=0;j<3;j++)
printf("%d\t",a[i][j]);
printf("\n");
}
printf("主对角线元素之和是:%d\n",a[0][0]+a[1][1]+a[2][2]);
printf("副对角线元素之和是:%d\n",a[0][2]+a[1][1]+a[2][0]);
}
//vc13
//prog1.cpp
//下列程序中,函数fun的功能是:求以下分数序列的前n项之和,1/2,2/3,3/5,5/8,8/13,13/21,...和值通过函数值返回main函数.
#include<stdio.h>
double fun(int n)
{
int i;
double s=0,j=1,k=2,temp;
for(i=0;i<n;i++)
{
s+=j/k;
temp=j;
j=k;
k=k+temp;
}
return s;
}
main()
{
int n;
printf("Enter n:");
scanf("%d",&n);
printf("\nThe result:%f\n",fun(n));
}
//vc13
//prog2.cpp
//编写程序,能对输入一行字符,统计其中分别有多少个单词和空格,比如输入:"How are you"有3个单词和2个空格.
#include<stdio.h>
#include<string.h>
main()
{
int i,j;
char a[100];
gets(a);
for(i=0,j=0;i<strlen(a);i++)
{
if(a[i]==' ')
j++;
}
printf("\n您输入的字符有%d个空格,%d个单词\n",j,j+1);
}
//vc13
//prog3.cpp
//编写程序,求1+3+5+7+...+195+197+199的和
#include<stdio.h>
main()
{
int i,s=0;
for(i=1;i<200;i+=2)
s+=i;
printf("1+3+5+7+...+195+197+199=%d",s);
}
//vc14
//prog1.cpp
//已知一个数列从第0项开始的前三项分别为0,0,1,以后的各项都是其相邻的前3项之和,下列程序中,
//函数fun的功能是:计算并输出该数列前N项的平方根之和sum,n的值通过形参传入.
#include<conio.h>
#include<stdio.h>
#include<math.h>
double fun(int n)
{
int i,a[1000];
a[0]=0;a[1]=0;a[2]=1;
double sum=1;
for(i=3;i<n;i++)
{
a[i]=a[i-3]+a[i-2]+a[i-1];
sum+=sqrt(a[i]);
}
return sum;
}
main()
{
int n;
printf("Input N=");
scanf("%d",&n);
printf("%f\n",fun(n));
}
//vc14
//prog2.cpp
//编写程序,用简单选择方法对输入的10个整数排序(从大到小).
#include<stdio.h>
main()
{
int i,j,a[10],pos,t;
printf("请输入10个整数:");
for(i=0;i<10;i++)
scanf("%d",&a[i]);
for(i=0;i<9;i++)
{
pos=i;
for(j=i+1;j<10;j++)
if(a[j]<a[pos])
pos=j;
if(pos!=i)
{
t=a[i];
a[i]=a[pos];
a[pos]=t;
}
}
for(i=0;i<10;i++)
printf(" %d",a[i]);
}
//vc14
//prog3.cpp
//编写程序,能实现输入10个数,将其中的最大值以及平均数输出
#include<stdio.h>
main()
{
int i;
float sum=0,m,n;
printf("请输入10个数:\n");
for(i=0;i<10;i++)
{
scanf("%f",&m);
if(i==0)
n=m;
sum+=m;
if(n<m)
n=m;
}
printf("最大值是%f,平均值是%f\n",n,sum/10);
}
//vc15
//prog1.cpp
//下面程序中函数fun的功能是:根据整形参数m,计算如下公式的值,y=1+1/2!+1/3!+1/4!+...+1/m!,例如,若m=6,则应输出1.718056
#include<stdio.h>
#include<conio.h>
double fun(int m)
{
long float y=0.0;
int i,j,n;
for(j=1;j<=m;j++)
{
n=1;
for(i=1;i<=j;i++)
n*=i;
y+=1.0/n;
}
return(y);
}
main()
{
int n;
printf("Enter n:");
scanf("%d",&n);
printf("\nThe result is %lf\n",fun(n));
}
//vc15
//prog2.cpp
//
展开阅读全文