西工大C语言POJ作业

时间:2019-05-12 02:02:49下载本文作者:会员上传
简介:写写帮文库小编为你整理了多篇相关的《西工大C语言POJ作业》,但愿对你工作学习有帮助,当然你在写写帮文库还可以找到更多《西工大C语言POJ作业》。

第一篇:西工大C语言POJ作业

T051.合并字符串

#include #include #include int main(){

char a[200],b[100];

gets(a);

gets(b);

strcat(a,b);

puts(a);

return 0;}

T052.字符串排序

#include #include void sort(char s[10][11]){ int i,j;char t[11];for(i=0;i<9;i++)for(j=0;j<9-i;j++)if(strcmp(s[j],s[j+1])>0){ strcpy(t,s[j+1]);strcpy(s[j+1],s[j]);strcpy(s[j],t);} } int main(){ char a[10][11],i;for(i=0;i<10;i++)scanf(“%s”,a[i]);sort(a);for(i=0;i<10;i++)printf(“%s ”,a[i]);printf(“n”);return 0;} T053.特殊要求字符串

#include #include int main(){ char s[100],a[100],t;int len,l,i,j;gets(s);len=strlen(s);l=len/2;for(i=0;is[j+1]){ t=s[j+1];s[j+1]=s[j];s[j]=t;} for(i=0;i

#include int main(){ char s[500],*p;int a[100]={0},i=0,j;gets(s);for(p=s;*p!='';p++){

if(*p>='0'&&*p<='9')

{

for(;*p!=''&&*p>='0'&&*p<='9';p++)

a[i]=a[i]*10+(*p-'0');

i++;

} } printf(“%dn”,i);for(j=0;j

printf(“%d ”,a[j]);printf(“n”);return 0;} T055.Music Composer

#include #include int main(){

char s[200];

gets(s);

if(s[0]=='A'&&s[1]=='#'){s[0]='B';s[1]='b';printf(“%sn”,s);}

else if(s[0]=='A'&&s[1]=='b'){s[0]='G';s[1]='#';printf(“%sn”,s);}

else if(s[0]=='B'&&s[1]=='b'){s[0]='A';s[1]='#';printf(“%sn”,s);}

else if(s[0]=='C'&&s[1]=='#'){s[0]='D';s[1]='b';printf(“%sn”,s);}

else if(s[0]=='D'&&s[1]=='b'){s[0]='C';s[1]='#';printf(“%sn”,s);}

else if(s[0]=='D'&&s[1]=='#'){s[0]='E';s[1]='b';printf(“%sn”,s);}

else if(s[0]=='E'&&s[1]=='b'){s[0]='D';s[1]='#';printf(“%sn”,s);}

else if(s[0]=='F'&&s[1]=='#'){s[0]='G';s[1]='b';printf(“%sn”,s);}

else if(s[0]=='G'&&s[1]=='b'){s[0]='F';s[1]='#';printf(“%sn”,s);}

else if(s[0]=='G'&&s[1]=='#'){s[0]='A';s[1]='b';printf(“%sn”,s);}

else printf(“UNIQUEn”);

return 0;} T056.字符串复制

(1)#include void copy(char s[],char a[],int m){ int i=0;for(i=m,m=0;s[i]!='';i++,m++)a[m]=s[i];a[m]='';} int main(){ char s[101],a[100];int m,i;gets(s);scanf(“%d”,&m);copy(s,a,m);puts(a);return 0;}

(2)#include int main(){ char t[100],s[100];int m,count,i;char *p;/*p要和t的类型相同,否则p的步长是int的长度,p每次++都会偏移sizeof(int)个字节,而不是sizeof(char)*/ i=0;count=0;p=&t[0];/*p和t的类型相同,看样子你用的是比较老的C编译器,如果用目前的C++编译器,那么这一句的问题编译时刻就可以发出错误信息,编译都不能通过*/ printf(“Input a string:”);gets(t);printf(“Input an integer:”);scanf(“%d”,&m);while(count

p++;

count++;} while(*p!=''){

s[i]=*p;

p++;

i++;} s[i]='';puts(s);return 0;} T057.字符串比较

#include int stringcompare(char s1[],char s2[]){ for(;*s1==*s2;s1++,s2++)if(*s1=='')return 0;return *s1-*s2;} int main(){ char s1[100],s2[100];int d;gets(s1),gets(s2);d=stringcompare(s1,s2);printf(“%dn”,d);return 0;} T058.删除字符

#include void deletechar(char s[],char c){ int i,j;for(i=j=0;s[i]!='';i++)if(s[i]!=c)s[j++]=s[i];s[j]='';} int main(){ char s[100],c;gets(s);scanf(“%c”,&c);deletechar(s,c);puts(s);return 0;}

T059.字符串左中右 #include #include void Left(char src[],int n,char dest[]){ char *p;int i;p=src;for(i=0;i

dest[i]=*p++;} dest[i]='';} void Right(char src[],int n,char dest[]){ int i,len;char *p;len=strlen(src);p=&src[len-n];for(i=0;i

dest[i]=*p++;} dest[i]='';} void Mid(char src[],int loc,int n,char dest[]){

int i;char *p;p=&src[loc];for(i=0;i

dest[i]=*p++;} dest[i]='';} int main(){ char str[20]={''},strL[20]={''},strR[20]={''} ,strM[20]={''};int n,loc;gets(str);scanf(“%d%d”,&n,&loc);Left(str,n,strL);printf(“%sn”,strL);Right(str,n,strR);printf(“%sn”,strR);Mid(str,loc,n,strM);printf(“%sn”,strM);return 0;}

T060.Coin test

#include #include #include int gcd(int a,int b){

if(a==0){return b;}

else if(b==0){return a;}

else{ int i=a>b?b:a;

while(a%i!=0||b%i!=0)

{

i--;

}

return i;

} } int main(){ char a[1000];int c=0,b=0,i,m;gets(a);m=strlen(a);for(i=0;i

if(a[i]=='S')

{

printf(“WAn”);

break;

}

if(a[i]=='U')

c++;

if(a[i]=='D')

}

b++;} if(c+b!=m)return 0;else{ if(fabs(((double)c)/m-0.5)>0.003)printf(“Failn”);else printf(“%d/%dn”,c/gcd(c,m),m/gcd(c,m));return 0;}

第二篇:C语言作业

Problem B: 算术基本运算 Description 计算两整数x和y(0

printf(”x * y : %dn“,x*y);

printf(”x / y quotient: %d, remainder: %dn“,x/y,x%y);

printf(”x ^ 2 : %dn“,x*x);

printf(”y ^ 3 : %dn“,y*y*y);

return 0;}

Problem C: 求圆的面积和周长 Description 从键盘输入圆的半径,求圆的面积和周长,圆周率取3.14。Input 输入一个浮点型数据,有效数字不会超过十进制的6位。Output 输出为两行。

第一行为圆的面积,第二行为圆的周长,格式见sample。Sample Input Sample Output Area: 28.260000 Perimeter: 18.840000 HINT 了解浮点类型的输入、输出和算术运算符 #include int main(){

double Area,Perimeter,r,p=3.14;

scanf(”%lf“,&r);

Area=p*r*r,Perimeter=2*p*r;

printf(”Area: %lfn“,Area);

printf(”Perimeter: %lfn“,Perimeter);

return 0;}

Problem D:平均值 Description 求3个数的平均值。Input 输入只有一行,为3个较小的整数。Output 输出为这3个整数的平均值,保留3位小数。Sample Input 1 2 3 Sample Output 2.000 HINT 注意除法运算对整型数据和浮点型数据是不一样的。#include int main(){

int x,y,z;

float ave;

scanf(”%d %d %d“,&x,&y,&z);

ave=(x+y+z)/3.0;

printf(”%.3f“,ave);

return 0;}

Problem E: 货币兑换

Description 给出人民币对美元、欧元、日元的当日汇率,求给定金额的人民币能兑换成外币的金额,求给定金额的外币能兑换成人民币的金额。要计算的外币有三种:美元、欧元、日元。Input 输入有三行。

第一行依次为美元、欧元、日元外币汇率,用空格分开。汇率用100外币为单位,精确到小数点后4位,如668.5200表示“100美元=668.5200人民币”。汇率浮动范围为(0,10000)。

第二行为外币金额x,第三行为人民币金额y。x,y均为整数,且0

第一行为金额为x的美元、欧元、日元兑换成人民币的金额,用空格分开。第二行为金额为y的人民币兑换成美元、欧元、日元的金额,用空格分开。所有金额精确到小数点后两位。Sample Input 668.5200 908.0685 7.9852 1500 1500 Sample Output 10027.80 13621.03 119.78 224.38 165.19 18784.75 HINT 了解浮点数据类型的精确度和输出控制。

#include int main(){ double a,b,c;double x;double y;scanf(”%lf%lf%lf“,&a,&b,&c);scanf(”%lf“,&x);scanf(”%lf“,&y);printf(”%.2lf %.2lf %.2lfn“,x*0.01*a,x*0.01*b,x*0.01*c);printf(”%.2lf %.2lf %.2lfn“,y/a*100,y/b*100,y/c*100);

return 0;

} Problem F: 求字符的值 Description 从键盘输入3个字符(不含双字节字符),分别输出每个字符的十进制值(ASCII码)、八进制值和十六进制值。Input

输入为3个字符。Output 输出为3行。

每一行为每个字符(对应输入顺序)的十进制、八进制和十六进制值,用空格分隔开。每个输出的值占3个字符,不足3个字符前面补0。Sample Input 0 A Sample Output 048 060 030 032 040 020 065 101 041 HINT 了解字符值的存储和整型的关系。#include int main(){ char x,y,z;scanf(”%c%c%c“,&x,&y,&z);printf(”%.3d %.3o %.3xn“,x,x,x);printf(”%.3d %.3o %.3xn“,y,y,y);printf(”%.3d %.3o %.3xn“,z,z,z);return 0;}

Problem G: 奇数还是偶数? Description 输入一个整数,判读它是奇数还是偶数。Input 输入只有一行,为一个100以内的正整数。Output 输出为一行。

若输入为偶数则输出“even”,奇数输出“odd”。Sample Input 30 Sample Output even HINT 用整数运算可以解决,练习“?:”表达式。#include int main(){

int x;

scanf(”%d“,&x);

if(x%2==0)

printf(”even“);

else

printf(”odd“);

return 0;}

Problem H: 绝对值 Description 求整型数据和浮点型数据的绝对值。Input 输入两个数,第一个是整数,第二个是浮点数。Output 输出为两行,第一行为整数的绝对值,第二行为浮点数的绝对值,注意浮点数的绝对值不输出无意义的0。Sample Input-1 1 Sample Output 1 1 HINT 求绝对值可以用标准库函数来完成,也可以自己判断。注意浮点数的输出格式。求绝对值的函数在哪个头文件?貌似很多人会搞错,包括很多编书的人!#include #include int main(){

int x;

float y;

scanf(”%d“,&x);

scanf(”%f“,&y);

printf(”%dn“,abs(x));

printf(”%gn“,fabs(y));

return 0;} Problem I: 简单的打折计算 Description 商店规定:消费满n元,可以打八八折。设某件商品标价m元,输入购买的件数x,计算出需要支付的金额(单位:元),精确到分。Input 输入只有一行,三个整数m、n和x,且0

300 4 Sample Output 334.40 HINT 了解浮点型的输出控制,注意整型和浮点型混合运算过程中的数据类型转换。#include int main(){

int m,n,x;

double y;

scanf(”%d%d%d“,&m,&n,&x);

y=m*x;

if(y>n)

y=y*0.88;

else

y=y;

printf(”%.2lfn“,y);

return 0;} Description 输入一个正整数的年份,判断是否为闰年。Input 输入只有一行,为一个10000以内的正整数。Output 输出为一行。

若输入为闰年偶数则输出“Yes”,否则输出“No”。Sample Input 2010 Sample Output No HINT 了解逻辑运算符和关系运算符。#include int main(){

int a;

scanf(”%d“,&a);

if(a%4==0&&a%100!=0||a%400==0)

printf(”Yes“);

else printf(”No“);

return 0;} Problem K: GHacker的解谜过关游戏 Description

GHacker最近痴迷于一个新上市的解谜游戏,其中一关的过关是破解一个字符串S。经过3天的冥思苦想,GHacker成功的搞明白了这其中的奥秘,把串S中的整数取出来求和,就可以过关了。但是GHacker的数学实在糟糕。他无法在短暂的时间内算出来,只好求助Jackie。Jackie观察到虽然每次出现的数字不同,但是其它的符号并不会变化。于是Jackie编写了一个非常短的程序,帮助GHacker把这一关过了。Input 输入为串S,只有一行。Output 串S中用非数字(0~9)分隔开的非负整数之和,不会超出int类型的数据范围。Sample Input `13?:[7514],54.487==”(438922x159??392)%032n111cdef120$95;Sample Output 447899 HINT scanf()可以解决这个问题,注意转义字符和格式控制字符。#include int main(){

int i,sum,num;

char str[1000];

while(scanf(“%s”,str)!=EOF)

{

num=sum=0;

for(i=0;;i++)

{

if(str[i]>='0' && str[i]<='9')

num=num*10+str[i]-'0';

else

{

sum=sum+num;num=0;

if(str[i]=='')break;

}

}

printf(“%dn”,sum);

}

return 0;}

Problem L: 水仙花数 Description 如果一个三位十进制数等于其各位数字的立方和,则称这个数为水仙花数。如:13+53+33=153。Input

一个整数x,100<=x<=999。Output x是水仙花数,则输出“YES”,否则为“NO”。Sample Input 153 Sample Output YES #include int main(){

int x,a,b,c,sum;

scanf(“%d”,&x);

a=x/100;

b=(x-a*100)/10;

c=(x-a*100-b*10);

sum=a*a*a+b*b*b+c*c*c;

if(x==sum)

printf(“YES”);

else

printf(“NO”);

return 0;} Problem M: 求1+2+...+n=? Description 给定一个n,求出s = 1+2+3+...+n的值。Input 输入只有一行,包含一个正整数n(n<=232)。Output 输出一行,为1+2+...+n的值。Sample Input 10 Sample Output 55 HINT n的数据范围大,需注意数据类型的选择和计算次序,以避免数据溢出。#include int main(){

unsigned long long n,s,a;

scanf(“%llu”,&n);

a=n%2;

if(a==0){ s=n/2*(n+1);

printf(“%llu”,s);}

else if(a!=0)

{s=n*((n+1)/2);printf(“%llu”,s);} return 0;}

Problem N: 2的多少次幂 Description 从键盘输入一个数x,x是2的整数次幂(x=2y),请编程求出y的值。Input 一个非负有理数x,x在[0,2256]范围内。Output 一个整数y。Sample Input 1 Sample Output 0 HINT 看起来数据很大,但是用double完全可以存储。为什么?请研究下IEEE-754标准的浮点数存储格式。这里要用到C语言标准库的数学函数。#include int main(){

double x;

scanf(“%lf”,&x);

printf(“%g”,log2(x));

return 0;} Problem A: 哪一行比较长 Description 读取两行字符串,按每行的长度从长到短输出。Input 输入为两行,每行不会超过26个字符。Output 输出为两行,按每行的长度从长到短输出。Sample Input abcdefghijk abcdefghijklmnopqrstuvwxyz Sample Output abcdefghijklmnopqrstuvwxyz abcdefghijk HINT

了解字符串的存储和操作,了解gets()和scanf(“%s”)读入字符串的不同之处。#include #include int main(){ int x,y;char a[30],b[30];gets(a);gets(b);x=strlen(a);y=strlen(b);if(x>y){

puts(a);

puts(b);

return 0;

} puts(b);puts(a);} Problem B: 三个数比较大小 Description 从键盘上输入0~100之间的三个数,按从小到大的顺序输出。

Input 输入只有一行,为三个整数。

Output 按从小到大输出这三个数。

Sample Input 15 10 20 Sample Output 10 15 20 HINT

用if语句判断各种情况可以解决这个问题。

include int main(){ int a,b,c,t;

scanf(“%d%d%d”,&a,&b,&c);if(a>b){

t=a;

a=b;

b=t;

} if(a>c)

{

t=a;

a=c;

c=t;

} if(b>c){

t=b;

b=c;

c=t;} printf(“%d %d %dn”,a,b,c);return 0;} Problem C: 输出是m的倍数或n的倍数、但不是m和n的公倍数的数 Description 输出1~k之间是m的倍数或n的倍数、但不是m和n的公倍数的数,其中1<=m,n

Input 输入三个整数,依次为k、m、n。

Output 从小到大输出符合题意的所有整数,两数之间用一个空格分开。

Sample Input 15 2 3 Sample Output 2 3 4 8 9 10 14 15 HINT

难点在于输出格式的控制:空格在数的中间,学会用循环时边界情况的特殊处理。

#include int main()

{

int k,m,n,a;

scanf(“%d%d%d”,&k,&m,&n);

{

if(m>n)

{

printf(“%d”,n);

for(a=n+1;a<=k;a++)

{

if((a%m==0&&a%n!=0)||(a%m!=0&&a%n==0))

printf(“ %d”,a);}

}

else

{

printf(“%d”,m);

for(a=m+1;a<=k;a++)

{

if((a%m==0&&a%n!=0)||(a%m!=0&&a%n==0))

printf(“ %d”,a);}

}

}

return 0;} Problem D: A+B Problem Description 计算a+b,0<=a,b<1000。Input 输入有多对整数a和b组成,每对a和b占一行,a,b用空格分开。Output 每行输出一个a+b的值,顺序与输入对应。Sample Input 1 2 10 20 Sample Output 3 30 HINT OJ系统上测试输入结束符为EOF(End Of File),其值为-1。用scanf()把文件所有内容读完后,会读到EOF,所以可以用来判断输入是否完成,测试时可以用Ctrl+Z产生EOF。本题解法参看FAQ。#include int main(){

int a,b;

while(scanf(“%d %dn”,&a,&b)!=EOF)

printf(“%dn”,a+b);} Problem E: A+B Problem(II): Input/Output Pratice Description 计算a+b,0<=a,b<1000。

Input 输入的第一行是一个整数N,后面有N对整数a和b,每对a和b占一行,a,b用空格分开。

Output 每行输出一个a+b的和,顺序与输入对应。

Sample Input 2 1 2 10 20 Sample Output 3 30 HINT

N给出了测试样例数,用for循环处理方便。

#include int main(){ int a,b,N,i;scanf(“%dn”,&N);for(i=1;i<=N;i++){

scanf(“%d %d”,&a,&b);

printf(“%dn”,a+b);} return 0;} Problem F: A+B Problem(III): Input/Output Pratice Description 计算a+b,0<=a,b<1000。

Input

输入有多对整数a和b组成,每对a和b占一行,a,b用空格分开。当测试样为0 0时表示输入结束,0 0不参与运算。

Output 每行输出一个a+b的值,顺序与输入对应。

Sample Input 1 2 10 20 0 0

Sample Output 3 30

HINT

练习break的使用。

#include int main(){

int a,b;

while(scanf(“%d%d”,&a,&b))

{

if(a==0&&b==0)

break;

printf(“%dn”,a+b);

} } Problem G: A+B Problem(IV): Input/Output Pratice Description 计算a+b,0<=a,b<1000。

Input 输入有多对整数a和b组成,每对a和b占一行,a,b用空格分开。

Output 每行输出一个a+b的值,顺序与输入对应。每个格式样例之间用一个空行分隔开。

Sample Input 1 2 10 20 35 Sample Output 3 30 50 HINT 由于输出的和比空行多一个,所以全部计算放在一个循环里是不行的,必须要特殊处理开头或者结尾。#include int main(){

int a,b,i;

scanf(“%d %d”,&a,&b);

printf(“%dn”,a+b);

while(scanf(“%d %d”,&a,&b)!=EOF)

printf(“n%dn”,a+b);} Problem H: n个数的最大值和最小值 Description 找出n个数中最大的数和最小的数,并将它们的值输出出来。

Input 输入为n+1个整数,都在int类型范围内。这些数可能用若干空格或者换行符分隔开。

输入的第1个数为n,表示后续有n个数输入。从输入的第2个数开始,求出直到第n+1个数中最大的数和最小的数。

Output 输出为两行,格式见sample。

Sample Input 3 0 1-1 Sample Output The maximum number is 1.The minimum number is-1.HINT

分隔符是空格还是回车都是空白符,对scanf(“%d”)来说没有区别;先读入n,然后用for循环就很容易控制读入n个数的过程。

#include int main(){ int n,i,max,min,x,y;scanf(“%d”,&n);scanf(“%d”,&x);min=x;max=x;for(i=3;i<=n+1;i++){

scanf(“%d”,&y);

if(min>y)

min=y;

if(max

max=y;} printf(“The maximum number is %d.n”,max);printf(“The minimum number is %d.n”,min);return 0;} Problem I: 成绩的等级 Description 把百分制的考试成绩转换成五级制的成绩:

90~100:Excellent

80~89:Good

70~79:Average

60~69:Pass

0~59:Failing

不在0~100之间的输入是非法数据,输出“Error”。

Input 输入多行,每行一个整数。

Output 输入所对应的成绩等级。

Sample Input-1 81 92 35 68 72 100 Sample Output Error Good Excellent Failing Pass Average Excellent

HINT

用switch语句解决这个问题比较方便。

#include int main(){

int a,grade;

while(scanf(“%d”,&grade)!=EOF)

{

if(grade>=0 && grade<=59)

a=1;

else if(grade>=60 && grade<=69)

a=2;

else if(grade>=70 && grade<=79)

a=3;

else if(grade>=80 && grade<=89)

a=4;

else if(grade>=90 && grade<=100)

a=5;

else

a=6;

switch(a)

{

case 1:

printf(“Failingn”);

break;

case 2:

printf(“Passn”);

break;

case 3:

printf(“Averagen”);

break;

case 4:

printf(“Goodn”);

break;

case 5:

printf(“Excellentn”);

break;

case 6:

printf(“Errorn”);

break;

}

}

return 0;} Problem J: 只有一个二元运算符的表达式运算 Description 编程序读入并计算只有一个二元运算符的表达式的值。用到的二元运算符有:“+”、“-”、“*”、“/”、“%”,与C语言的语法一致。

Input 每行输入一个表达式,格式为:二个整型的操作数a和b,中间用一个符号分开,这个符号就是运算符。测试样例不存在除数为0的情况。

输入以a和b为0,且用一个空格分开结束。

Output 每行对应输入的运算符为“+”、“-”、“*”、“/”、“%”,则计算a+b、a-b、a*b、a/b、a%b的值;否则输出“invalid op”。

Sample Input 33+5 8*9 2.2 1-6 17/3 9%3 0 0

Sample Output 38 72 invalid op-5 5 0 HINT

教材上有非常相似的例题可以参考。

#include int main(){

int a, b;

char ch;

while(scanf(“%d%c%d”, &a, &ch, &b))

{

if(a == 0 && b == 0 && ch == ' ')break;

if

(ch == '+')ch = '+';

else if(ch == '-')ch = '-';

else if(ch == '*')ch = '*';

else if(ch == '/')ch = '/';

else if(ch == '%')ch = '%';

else

ch = '~';

switch(ch)

{

case '+' :

printf(“%dn”, a + b);

break;

case '-' :

printf(“%dn”, a2x + 1 = 0 only one real root : 1

Case 3 : 5x^22x = 0 two real roots : 0, 0.666667

Case 5 : 3x^2 + 12 = 0 two imaginary roots : 2i,-2i

Case 6 : 2x^2 + 4x + 4 = 0 two imaginary roots :-1+i,-1-i

HINT

输出方程格式的各种情况要想清楚,这一部分测试数据给的很全面。另一个就是浮点数的精度控制,这一部分sample给出了例子。

值得注意的是,linux下gcc编译的浮点数运算结果有-0,这是OJ系统Judge端使用的系统;而windows XP下的minGW编译器和VC6不会产生-0,只会输出0;但windows 7下的minGW编译器是能够产生-0的(确实很诡异)。因此使用windows XP的同学忽略了对结果为0的检测,程序需要对结果为0的情况进行全面考虑,确保正确的输出0。这个问题卡了好些同学好几天。

关于是否会产生-0,输出表达式0.0/-1的结果就能测试出来。浮点数从负数方向运算出结果为0,则浮点值为-0是符合C语言浮点数运算规则的,目前尚不清楚windows XP系统不能产生-0的原因。

#include #include #define eps 0.00001 int main(){

int i,n=1;

double a,b,c,x1,x2,p,q,m,t;

char x,y;

while(1)

{

scanf(“%lf”,&a);

if(fabs(a)< eps)

break;

//结束条件

scanf(“%lf%lf”,&b,&c);

p=(-b)/(2*a);

q=b*b-4*a*c;

if(fabs(q)< eps)

//精度控制

q = 0;

m=(sqrt(-q))/(2*a);

x1 =(-b + sqrt(q))/(2*a);

x2 =(-bxx-y;

if(a * x + b * y +(c * 1.0)/(d * 1.0)* z == m)

printf(“%ld,%ld,%ldn”,x,y,z);

}

}

printf(“n”);

}

}

return 0;} Problem I: 神棍的纯真愿望 Description 问题背景:

神棍队的神棍童鞋很喜欢和女盆友逛街。神棍节这天,他们照例去逛街,亲昵过程中忽然发现路边上围了好一圈人。好奇心大盛的神棍于是凑过去围观。原来那里有一个棍神,他出了一道题目,如果有人能够答对的话,他就会实现那个人的一个愿望。神棍心想,有个女盆友多么幸福,要是大家都有女盆友该有多好。于是神棍想要答出这个问题,然后许一个让大家都可以很快拥有自己的女盆友的愿望,顺便在女盆友的面前臭美一番。神棍扫了一眼题目,拿出贴身小电脑,巴拉巴拉几下就敲出了代码,解决了那个问题。大家都在为神棍欢呼。这是什么问题

呢?你是否也有兴趣看看?如果AC了的话就可以跟魔法少女签订契约,成为魔法少女的奴隶喔!

问题描述:

某个数的立方如果以111结尾的话,我们就称其为“神棍数”,现在要你求第k大的“神棍数”是多少。

Input 多组case,以EOF结尾。

每个case一行,只包含一个整数k(1<=k<=***0000)。

Output 一个整数表示第k大的“神棍数”

Sample Input 1 Sample Output 471 #include int main(){

unsigned long long k;

while(scanf(“%llu”,&k)!=EOF)

{

if(k>1)

printf(“%llu471n”,k-1);

else

printf(“471n”,k);

}

return 0;} Problem J: 魔方阵 Description 所谓N阶魔方阵,是一个N*N的方阵,其元素由1到N^2组成,且方阵每行每列以及对角线的元素和相等。如三阶魔方阵: 8 1 6 3 5 7 4 9 2 魔方阵的规律如下:

从1~N*N的 各个数依次如下规则存放:

(1)1在第一行中间一列;

(2)每一个数存放的行比前一个数的行数减一,列数加一(如上的三阶方阵5在4的上一行,后一列);

(3)如果上一个数在第一行,则下一个数在最后一行,列数加一;

(4)如果上一个数在最后一列,则下一个数在第一列,行数减一;

(5)如果按上述规则确定的位置已经有数,或上一个数在第一行第N列,则下一个数放在上一个数的正下方。

Input 输入包含多组数据,每组为一个小于100的正奇数。

Output 对于每个输入的N,输出N阶魔方阵;两组数据之间用一个空行分隔。方阵中每行每两个数之间有一个空格,行首和行末没有多余的空格。

Sample Input 3 Sample Output 8 1 6 3 5 7 4 9 2

HINT #include int main(){

int i, j, k, n, a[200][200];

while(scanf(“%d”, &n)!=EOF)

{

for(i = 1;i <= n;i++)

for(j = 1;j <= n;j++)

a[i][j] = 0;

j = n / 2 + 1;

a[1][j] = 1;

for(k = 2;k <= n * n;k++)

{

i=i-1;

j=j+1;

if(i < 1 && j > n)

{

i=i+2;

j=j-1;

}

else

{

if(i < 1)i = n;

if(j > n)j = 1;

}

if(a[i][j] == 0)a[i][j] = k;

else

{

j=j-1;

i=i+2;

a[i][j] = k;

}

}

for(i = 1;i <= n;i++)

{

printf(“%d”, a[i][1]);

for(j = 2;j <= n;j++)

printf(“ %d”, a[i][j]);

printf(“n”);

//for(j=1;j<=n;j++)

//printf(“%5d”,a[i][j]);

//printf(“n”);

}

printf(“n”);

}

return 0;}

第三篇:C语言作业

第一章

使用printf()函数按下面的形式显示某应用程序的功能 #include void main(){ printf(“********************n”);printf(“欢迎使用卡卡名片夹n”);printf(“[1]显示全部名片n”);printf(“[2]新建名片n”);printf(“[3]修改名片n”);printf(“[4]删除名片n”);printf(“[5]退出n”);printf(“********************n”);}

编写一个C程序,能够从键盘输入一个浮点数,然后输出它的倒数。#include void main(){ float m,n;printf(“请输入一个浮点数n”);scanf(“%f”,&m);n=1/m;printf(“该数的倒数是%f”,n);}

第二章

将华氏温度转换为摄氏温度。使用公式:C=5/9(F-32.#include void main(){ float m,n;printf(“请输入华氏温度n”);scanf(“%f”,&m);n=5.0/9.0*(m-32);printf(“其对应的摄氏温度为:%fn”,n);}

输入两个角度值分别赋给变量x和y,计算下面算式的结果,#include #include #define PI 3.14

void main(){ int x,y,z,s1,s2;printf(“请输入两个角度值n”);scanf(“%f%f”,&x,&y);x=x*PI/180.0;y=y*PI/180.0;s1=sin(fabs(x)+fabs(y));s2=sqrt(cos(fabs(x)+fabs(y)));z=s1/s2;} printf(“所的结果为%f/n”,z);

贷款额的计算,即计算一次可向银行贷款多少元,其计算公式为 D=a(In-1)/[(I-1)In-] 式中:D为一次可向银行的贷款额,a为每年可以还贷的金额,I=1+人(r为年利率),n为还清贷款的年数。a、r、n由键盘输入。#include #include void main(){ float a,r,n,I,D,p,q;printf(“请输入每年可以还贷的金额a,年利率r,还清贷款的年数nn”);scanf(“%f%f%f”,&a,&r,&n);I=1+r;p=a*(pow(I,n)-1);q=(I-1)*pow(I,n);D=p/q;printf(“一次可向银行贷款%f元”,D);}

第三章

将China译成Glmre。方法是:用原来字母后面的第4个字母代替原来的字母。#include void main(){ char c1,c2,c3,c4,c5;c1='C'+4;c2='h'+4;c3='i'+4;c4='n'+4;c5='a'+4;printf(“%c%c%c%c%cn”,c1,c2,c3,c4,c5);}

把十进制数97转化为八进制、十六进制数。#include void main(){ int n=97;printf(“oct=%on”,n);printf(“xct=%xn”,n);}

设圆半径r=1.5,圆柱高h=3,求圆周长,圆面积,圆球表面积,圆球体积,圆柱体积。#include #define PI 3.1415926 void main(){ float r,h,l,s,ss,sv,hs,hv;printf(“请输入圆半径,圆柱高n”);scanf(“%f%f”,&r,&h);l=2*PI*r;s=PI*r*r;ss=4*PI*r*r;sv=4.0/3.0*PI*r*r*r;hs=2*PI*r*r+2*PI*r*h;hv=PI*r*r*h;printf(“圆周长为%f,圆面积为%f,圆球表面积为%f,圆球体积为%f,圆柱表面积为%f,圆柱体积为%f”,l,s,ss,sv,hs,hv);}

已知三角形的三边长,求三角形面积。#include #include void main(){ float a,b,c,p,s;printf(“请输入三角形的三边长为:n”);scanf(“%f%f%f”,&a,&b,&c);

} p=(a+b+c)/2;s=sqrt(p*(p-a)*(p-b)*(p-c));printf(“此三角形的面积是%f”,s);

输入三个字母m,a,n,并以”man”m a n(竖行排列)的形式输出 #include void main(){ char a,b,c;printf(“请输入三个字母n”);scanf(“%c,%c,%c”,&a,&b,&c);printf(“"%c%c%c”n“,a,b,c);printf(”%cn%cn%cn“,a,b,c);}

输入一个字符,找出他的前一个字符和后一个字符,并根据ASCII值,按从大到小的顺序输出这三个字符级ASCII码值。#include void main(){ char c1,c2,c3;scanf(”%c“,&c2);c1=c2-1;c3=c2+1;printf(”%c%c%cn“,c1,c2,c3);

printf(”%d,%d,%d“,c1,c2,c3);}

已知鸡免总头数为h(30),总脚数为f(90),求鸡免各有几只

#include void main(){ int h,f,a,b;

}printf(”请输入总头数和总脚数n“);scanf(”%d,%d“,&h,&f);a=(4*h-f)/2;b=h-a;printf(”鸡有%d只,兔有%d只“,a,b);

输入一个三位正整数,反向输出对应的数

#include void main(){ int i,j,k,l,m;

}printf(”请输入一个三位整数:n“);scanf(”%d“,&i);j=i/100;k=(i-j*100)/10;l=i-j*100-k*10;m=l*100+k*10+j;printf(”此数的倒置数为:%dn“,m);

计算方程ax2+bx+c=0的根

#include #include void main(){ float a,b,c,x1,x2,p;printf(”请输入a,b,c的值:n“);scanf(”%f%f%f“,&a,&b,&c);

p=sqrt(b*b-4*a*c);x1=(-b+p)/(2*a);

x2=(-b-p)/(2*a);printf(”x1=%f,x2=%fn“,x1,x2);}

用putchar函数读入两个字符c1,c2,然后分别用putchar函数和printf函数输出 #include void main(){ char c1,c2;c1=getchar();c2=getchar();putchar(c1);printf(”n“);putchar(c2);printf(”n“);printf(”%cn%cn“,c1,c2);}

第四章

输入三个整数x,y,z,请把这三个数由小到大输出,#include void main(){ int x,y,z,m;printf(”请输入三个整数n“);scanf(”%d,%d,%d“,&x,&y,&z);if(x>y){m=x,x=y,y=m;} if(x>z){m=x,x=z,z=m;} if(y>z){m=y,y=z,z=m;} printf(”%d,%d,%dn“,x,y,z);}

当月收入超过1600元时,超过部分交税款20%。试编写一程序计算税款(其中月收入由键盘输入。

#include void main(){ float a,b=0;

}printf(”请输入月收入n“);scanf(”%f“,&a);if(a>1600)b=(a-1600)*0.2;printf(”应缴税款为%f元n“,b);

计算y=3x+6(x>=0)

-x*x+2x-8(x<0)

#include void main(){ float x,y;

} printf(”请输入自变量x的值n“);scanf(”%f“,&x);if(x>=0)y=3*x+6;else y=-x*x+2*x-8;printf(”对应因变量的值为%fn“,y);

为优待顾客,商店对购货在1000元和1000元以上的,八折优惠;500元以上(包括500元,下同),1000元以下的,九折优惠;200元以上,500元以下的,九五折优惠;100元以上,200元以下的,九七折优惠;100元一下不优惠。请输入购货款后,打印出该交的货款。#include void main(){ float x,y;

}printf(”请输入购货款n“);scanf(”%f“,&x);if(x>=1000)y=x*0.8;else if(x>=500)y=x*0.9;else if(x>=200)y=x*0.95;else if(x>=100)y=x*0.97;else y=x;printf(”应交货款为%.1f元n“,y);

输入班号,输出该班学生人数(用switch语句编程)#include void main(){ int m,n;

}printf(”请输入班号n“);scanf(”%d“,&m);switch(m){ case 21:n=45;break;case 22:n=51;break;case 23:n=48;break;case 24:n=46;break;case 25:n=48;break;case 26:n=52;break;default:printf(”输入错误n“);} printf(”该班有%d个学生n“,n);

第五章

任意输入N个数,统计其中正数,负数和零的个数。

#include void main(){ int N,n,m,a=0,b=0,c=0;

}printf(”请输入数字个数n“);scanf(”%d“,&N);for(n=1;n<=N;n++){ printf(”请输入数字n“);scanf(”%d“,&m);if(m>0)

a++;else if(m<0)

b++;else

c++;} printf(”正数有%d个,负数有%d个,零有%d个n“,a,b,c);

第五章

任意输入N个数,统计其中正数,负数和零的个数。#include void main(){ int a=0,b=0,c=0,n,i,m;printf(”请输入数的个数:n“);scanf(”%d“,&n);for(i=1;i<=n;i++){

} printf(”请输入第%d个数:n“,i);scanf(”%d“,&m);if(m>0)

a++;else if(m<0)

b++;else

c++;} printf(”正数有:%d个,负数有:%d个,零有:%d个n“,a,b,c);

求值

#include void main(){ int i,j,k,a=0,b=0;float c=0,sum=0;for(i=1;i<=100;i++)a+=i;for(j=1;j<=50;j++)b+=j*j;for(k=1;k<=10;k++)c+=1.0/k;sum=a+b+c;printf(”sum=%.2lfn“,sum);}

在1~500中,找出所有能同时满足用3除余2,用5除余3,用7除余4的整数。#include void main(){ int i;for(i=1;i<=500;i++){

if(i%3==2&&i%5==3&&i%7==4)

printf(”%dn“,i);} }

任意输入一串字符,以“?”结束,分别统计其中字母,数字和其他字符的个数。#include void main(){ int a=0,b=0,c=0;char d;while((d=getchar())!='?'){

if(d>='A'&&d<='Z'||d>='a'&&d<='z')

a++;

else if(d>='0'&&d<='9')

b++;

else

c++;} printf(”字母有%d个,数字有%d个,其他字符有%d个n“,a,b,c);}

第六章

求任意20个数中的正数之和及个数。#include void main(){ int i,k=0;float a[30],sum=0;for(i=0;i<30;i++){

printf(”请输入第%d个数n“,i+1);

scanf(”%f“,&a[i]);

if(a[i]>0)

{

sum+=a[i];

k++;

} } printf(”正数之和为%fn“,sum);printf(”正数的个数为%dn“,k);}

统计全班某门功课的平均成绩,找出最高,最低分。#include void main(){ int a[38],i,j,k,sum=0;float ave;

printf(”请输入第1个同学的成绩:n“);scanf(”%d“,&a[0]);j=k=a[0];for(i=1;i<38;i++){ printf(”请输入第%d个同学的成绩:n“,i+1);scanf(”%d“,&a[i]);while(a[i]>100||a[i]<0){

printf(”输入的成绩无效!请重新输入!n“);

scanf(”%d“,&a[i]);} sum+=a[i];if(a[i]>j)j=a[i];if(a[i]

}

一个数如果恰好等于他的因子之和,这个数就称为完数。找出1000以内的所有完数。#include void main(){ int sum,i,n;

} printf(”从2到1000的完备数有:n“);for(n=2;n<1000;n++){ sum=0;for(i=1;i

电话传递数据加密。#include void main(){ int n,b,i,a[4];

} printf(”请输入一个三位数n“);scanf(”%d“,&n);a[0]=n/1000;a[1]=(n/100)%10;a[2]=(n%100)/10;a[3]=n%10;for(i=0;i<4;i++)a[i]=(a[i]+5)%10;b=a[0];a[0]=a[3];a[3]=b;b=a[1];a[1]=a[2];a[2]=b;n=1000*a[0]+100*a[1]+10*a[2]+a[3];printf(”%dn“,n);

计算两个矩阵的乘积。#include void main(){ int a[2][3],b[3][4],c[2][4]={0};int i,j,k,s;

printf(”请给数组a[2][3]赋值n“);for(i=0;i<2;i++){ for(j=0;j<3;j++)

scanf(”%d“,&a[i][j]);} printf(”请给数组b[3][4]赋值n“);for(i=0;i<3;i++){ for(j=0;j<4;j++)

scanf(”%d“,&b[i][j]);} for(i=0;i<2;i++){ for(j=0;j<4;j++){

for(k=0,s=0;k<3&&s<3;k++,s++)

c[i][j]+=a[i][k]*b[s][j];} }

} for(i=0;i<2;i++){ for(j=0;j<4;j++)

printf(”%d

“,c[i][j]);printf(”n“);}

第七章

#include #include void change(char str[]){ int i,j;for(i=j=0;str[i]!='';i++)

if(str[i]>='A'&&str[i]<='Z'||str[i]>='a'&&str[i]<='z'||str[i]>='0'&&str[i]<='9'||i==0||str[i]!=str[i-1])

str[j++]=str[i];

str[j]='';}

void main(){

} char str[80];gets(str);change(str);puts(str);return;

#include

int sum(int n){ int i,j,k,l;i=n%10;n=n/10;j=n%10;k=n/10;l=i*i*i+j*j*j+k*k*k;return l;}

void main(){ int x,y;for(x=100;x<1000;x++){

y=sum(x);

if(y==x)

} } printf(”%dn“,x);

#include

int min(int m,int n){ int i,j,k;i=m;j=n;if(i>j){

k=i;

i=j;

j=k;} while(k!=0){

k=j%i;

j=i;

i=k;} k=m*n/j;return k;}

void main(){ int a,b,c,d,e;int x,y,z,w;

} printf(”请输入5个正整数n“);scanf(”%d,%d,%d,%d,%d“,&a,&b,&c,&d,&e);x=min(a,b);y=min(c,d);z=min(x,y);w=min(z,e);printf(”%dn“,w);

#include

int wanbeishu(int n){ int i,j=0;for(i=1;i

void main(){ int x,y;printf(”30000以内的完备数有:n“);

} for(x=1;x<=30000;x++){ y=wanbeishu(x);if(x==y)printf(”%dn“,x);}

#include

int yueshuhe(int n){ int i,j=0;for(i=1;i

void main(){ int x,y,z;printf(”互满数有:n“);for(x=1;x<=30000;x++){

y=yueshuhe(x);

z=yueshuhe(y);

} } if(x==z&&x

习题八

#include void main(){ int a[200],b[200],m,n,len,*p,*q,*t;printf(”请输入升序数组a的元素个数:“);scanf(”%d“,&m);for(p=a;p

printf(”请输入升序a的第%d个元素值:“,p-a+1);

scanf(”%d“,p);} printf(”请输入升序数组b的元素个数:“);scanf(”%d“,&n);for(q=b;q

printf(”请输入升序b的第%d个元素值:“,q-b+1);

scanf(”%d“,q);} p=a;q=b;len=m;

} while(p

for(t=a+len-1;t>=p;t--)*(t+1)=*t;

*p=*q;

len++;

q++;

if(q==b+n)break;} p++;} while(q

#include #define N 100 void main(){ int a[N],*p=a,m,n,i,k,s;printf(”请输入总人数:“);scanf(”%d“,&n);for(i=0;i

} printf(”请输入报数值:“);scanf(”%d“,&m);i=0;k=0;s=0;while(s

printf(”%d “,*(p+i));

*(p+i)=0;

k=0;

s++;} i++;if(i==n)i=0;} printf(”n“);

#include #define N 10 void func(int *,int);void main(){ int a[N],i;printf(”请任意输入%d个数组元素:n“,N);for(i=0;i

func(a,N);for(i=0;i

void func(int *a,int n){ int *p,*q;int count=0;for(p=a;p

if(*p==0)count++;

for(p=a,q=a+n;p

if(*p==0)

{

while((*q-1)==0)q--;

if(p==q)break;

*p=*(q-1);*(q-1)=0;

}

for(p=a,a=q;p

for(q=p+1;q

if(*p>*q){*p=*p+*q;*q=*p-*q;*p=*p-*q;} }

#include #define N 10 int search(int *[],int,int);void main()

{

int a[N],*p[N],i,k,m;printf(”请任意输入%d个数组元素:n“,N);for(i=0;i

printf(”第%d大元素的值:%dn“,k,*p[m]);

printf(”第%d大元素的下标:“,k);

for(i=0;i

if(a[i]==*p[m])printf(”%d“,i);

printf(”n“);}

else printf(”第%d大元素不存在!n“,k);}

int search(int *a[],int n,int k){ int i,j,*t;for(i=0;i

for(j=i+1;j

if(*a[i]<*a[j]){t=a[i];a[i]=a[j];a[j]=t;}

i=1;j=0;

while(i

{

if(*a[i-1]>*a[i])j++;

if(j==k)break;

i++;

}

if(k<=0||j

else return i-1;}

#include int find(int,int);void main(){ int n;long x,k;printf(”请输入一个长整型数据: n“);scanf(”%ld“,&x);printf(”请输入待查找的子数: n“);scanf(”%ld“,&k);n=find(x,k);printf(”%d中的%ld出现的次数为%dn“,x,k,n);} int find(int x,int k){ int a[10],b[10],*p=a+10,*q=b+10,*t,*r,s=0;do {

p--;

*p=x%10;

x=x/10;} while(x!=0);do {

q--;

} *q=k%10;k=k/10;}while(k!=0);while(p

if(*t==*r)

{

t++;

r++;

}

else break;

if(r==b+10)s++;

p++;} return s;

习题九

#include void main(){ char str[80];int i;

} printf(”请输入原始字符串: “);gets(str);for(i=0;str[i]!='';i++)if(str[i]>='A'&&str[i]<'Z'||str[i]>='a'&&str[i]<'z')

str[i]+=1;else if(str[i]=='Z'||str[i]=='z')

str[i]-=25;printf(”结果字符串为:“);puts(str);

#include #include #define M 5 #define N 80 void main(){ char str[M][N],s[N];int i,j,k,len,m=0,l=0,word=0;puts(”请输入英文文章:“);for(i=0;i

gets(str[i]);

len=strlen(str[i]);

for(j=len-1;j>=0;j--)

if(str[i][j]>='a'&&str[i][j]<='z'||str[i][j]>='A'&&str[i][j]<='Z')

{

}

word=1;l++;} else if(word){ for(k=j+1;k

s[m++]=str[i][k];s[m++]=str[i][j];word=0;l=0;} else s[m++]=str[i][j];if(word)for(k=j+1;k

s[m++]=str[i][k];s[m]='';strcpy(str[i],s);m=0;l=0;word=0;} puts(”经过处理的英文文章:n“);for(i=0;i

#include void main(){ char str[80],*p,*q;

} puts(”请输入字符串:“);gets(str);for(p=str;*p!='';p++)if(!(*p>='a'&&*p<='z'||*p>='A'&&*p<='Z'||*p>='0'&&*p<='9'))

if(*p==*(p+1))

{

for(q=p;*q!='';q++)

*q=*(q+1);

p--;

} puts(”处理后的字符串为:“);puts(str);#include #include void strcopy(char *,char *,int,int);void main(){ char str1[80],str2[80];int m,n,len;printf(”请输入原字符串:“);gets(str1);

printf(”从第几个字符开始复制?“);scanf(”%d“,&n);printf(”复制到第几个字符?“);scanf(”%d“,&m);len=strlen(str1);if(len==0)printf(”字符串为空n“);else if(m>len||m<1||len||n<1)printf(”输入的字符范围应为%d~%dn“,1,strlen(str1));else { strcopy(str1,str2,m,n);

printf(”复制字符串:%sn",str2);} }

void strcopy(char *p,char *q,int m,int n){ char *s1=p+m-1,*s2=p+n-1;if(m

while(s1<=s2)

*q++=*s1++;else

while(s1>=s2)*q++=*s1--;

*q='';}

第四篇:C语言作业:学通讯录

学生通讯录

一、语言和环境

1.实现语言:C语言。

2.环境要求:devC++。

二、实现功能

开发一套学生通讯录C语言系统,具体实现如下功能:

1.打开系统显示欢迎界面,以及功能菜单,用户输入需要操作的功能序号,根据用户选择的需要进行相应界面

如图1所示。

图1

功能菜单

2.当用户输入序号1时进入到录入学生信息界面,用户输入学生的姓名,性别,年龄和电话,输入完毕保存学生信息,并提示是否继续录入,如果选择Y则继续录入,如果选择为N则返回主菜单。如图2所示:

图2

录入学生信息

3.当用户选择序号2则把录入的学生信息进行展示,如果没有录入则提示没有学术信息。如图3,图4所示

图3

显示录入的学生信息

图4

显示无学生信息

4.当用户选择菜单按键3时可以通过姓名查询学生信息,如果有则显示此学生信息,如果

如图5所示

图5

查询学生信息

图6

查无此人

三、具体要求及推荐实现步骤

1.定义结构体保存学生信息(学生姓名,学生年龄,学生性别,学生手机号),定义结构体数组保存学生商品。

2.录入学生信息

a)

输入学生信息,保存在结构体数组中,定义变量保存存储的个数”

3.显示

a)

读取数组中学生信息,循环显示。

4.查找

a)

根据用户输入的姓名,在数组中进行查找

四、评分标准

标准:学生通讯录

该项目的评分标准如下:

变量定义

定义结构体和结构体数组

主函数中能够循环进行菜单中的相关操作,并选择退出能自动退出程序

录入信息

正确定义录入函数

正确对信息进行保存

实现是否继续录入功能

显示

正确定义显示函数

正确判断是否已经录入学生信息

正确对学生信息进行循环显示

查找

正确定义查找函数

正确显示查找功能

总分

100分

第五篇:C语言作业总结

5.9 判断素数

从键盘上输入一个大于或等于2的正整数n,判断它是否是素数。n从键盘输入。提示:素数定义:只能被1或它本身整除的正整数为素数,例如:2,3,5,7,11,13 且1不是素数。解题思路:、让 n 被 i 整除(i 的值从 2 变到 n-1)2、如果 n 能被 2 ~(n-1)之中任何一个整数整除,则表示 n 肯定不是素数,不必再继续被后面的整数除,因此,可以提前结束循环。注意:此时 i 的值必然小于 n。

1.2.3.4.5.6.7.8.9.10.11.12.13.#include int main(){ int a,i;scanf(“%d”,&a);

for(i=2;i<=a;i++){ if(a%i==0)

break;}

if(i

else printf(“是素数n”);return 0;}

5.7 统计个数

n 从键盘输入,统计在 [1,n] 中,有多少个是 7 的倍数或末尾是 7 的数。例如输入 20,在 [1,20] 中满足条件的数(7,14,17)共有 3 个。

1.2.3.4.5.6.7.8.9.10.#include int main(){ int a,b=0,i;scanf(“%d”,&a);

for(i=1;i<=a;i++){ if(i%7==0||i%10==7)b=b+1;} printf(“%d个n”,b);

return 0;}

5.12 老鼠咬坏的账本

老鼠咬坏了帐本,式中符号□是被老鼠咬掉的地方。要恢复下面的等式,应在2个□中分别填上一个数字,编程输出这2个数,2数间用逗号隔开,如3,5。3□×6237=□3×3564 提示:用穷举法

1.2.3.4.5.#include int main(){ int i,a;for(i=0;i<=9;i++){ for(a=1;a<=9;a++)6.7.8.9.10.11.12.13.14.{ if((30+i)*6237==(a*10+3)*3564){ printf(“%d,%dn”,i,a);}

} }

return 0;}

5.10 第n个闰年

编程找出自1601开始到2015年之间的第n个闰年并输出是哪一年,n从键盘输入。闰年条件:四年一闰,百年不闰;四百年又闰。

1.2.3.4.5.6.7.8.9.10.11.12.13.14.15.16.#include int main(){ int a,i,c=0;scanf(“%d”,&a);

for(i=1601;i<=2015;i++){ if((i%4==0&&i%100!=0)||(i%400==0))c=c+1;if(a==c){ break;} }

printf(“第%d个闰年是%dn”,a,i);

return 0;}

5.13 满足条件的三角形

直角三角形一条直角边长是24,其余的边长都是正整数,而且斜边的长度不超过50。输出出所有满足条件的三角形。

1.2.3.4.5.6.7.8.9.10.11.12.13.#include int main(){ int i,a;for(i=1;i<=50;i++){ for(a=1;a<=50;a++){ if(24*24+a*a==i*i)

{ printf(“24,%d,%dn”,a,i);}

} }

return 0;14.}

5.14 多个数输出控制

输出 1-35 之间的偶数,每行输出 4 项,最后一行输出时若不足 4 项也按一行输出, 并且统计偶数的个数。

1.#include 2.int main()3.{ int a,b=0;4.for(a=2;a<=35;a=a+2)5.{ printf(“%d,”,a);6.b=b+1;

7.if(b%4==0)printf(“n”);8.}

9.if(b%4!=0)printf(“n”);

10.printf(“偶数的个数为%dn”,b);11.return 0;12.}

5.15 图案输出

编程输出由星号组成的图形: * * * * * * * * * * * * * * *

1.2.3.4.5.6.7.8.9.10.11.12.#include int main(){ int a,b;for(a=1;a<=5;a++)行数 { for(b=1;b<=a;b++){ printf(“*”);}

printf(“n”);}

return 0;}

6.1 统计区间的奇数个数

n从键盘输入,统计区间[20,n)内的大于26的奇数的个数并输出。

1.2.3.4.5.6.7.#include int main(){int m,i,a=0;scanf(“%d”,&m);

if(m>26){ for(i=27;i<=m;i++){ if(i%2!=0)8.9.10.11.12.13.14.a=a+1;} printf(“奇数的数量=%d个n”,a);} else if(20<=m<=26)printf(“奇数的数量=0个n”);

return 0;}

6.2 发票的编码

有一张发票上有一个5位数的号码67口口8,其中百位和十位上的数字看不清了,但知道该数能够被78整除,也能被67整除。编程输出该号码。提示:用穷举法

1.2.3.4.5.6.7.8.9.10.11.12.#include int main(){int m,i;for(i=0;i<=9;i++){ for(m=0;m<=9;m++){ if(((67000+100*i+10*m+8)%78==0)&&((67000+100*i+10*m+8)%67==0))printf(“%dn”,67000+100*i+10*m+8);} }

return 0;}

6.3 正负交替的多项式求和

计算S=-1/1+1/2-1/3+1/4„+1/n,其中 n 从键盘输入,结果保留3位小数。提示:

从 1+2+3+...+ n 可以变换出各种多项式的求和。

1.2.3.4.5.6.7.8.9.10.11.12.13.#include int main()

{float m,i,c,a=0,b=0;scanf(“%f”,&c);

for(i=1;i<=c;i=i+2){ a=a-1.0/i;} for(m=2;m<=c;m=m+2){ b=b+1.0/m;}

printf(“%.3fn”,a+b);return 0;}

6.4 统计大写字母的个数

从键盘输入12个字符,输出其中大写字母的个数。

1.2.#include int main()3.4.5.6.7.8.9.10.11.12.13.{char a;int i,m=0;

for(i=1;i<=12;i=i+1){ scanf(“%c”,&a);if(a<='Z'&&a>='A')m=m+1;}

printf(“%dn”,m);return 0;} 6.5 正整数的位数

2016.3.30 模块考试原题:

从键盘上输入一个正整数,输出该数的位数。

例如:输入 1234,输出 4 位数;输入 123456,输出 6 位数。提示:考点:模(求余)运算,循环

假设该正整数(不包括0)放在a中,重复a=a/10,直到a为0为止。每除一次计数一次,因为不能确定循环的次数,while 循环是首选。例如三位数:123/10=12,12/10=1,1/10=0

1.2.3.4.5.6.7.8.9.10.11.#include int main(){ int i,m=0;scanf(“%d”,&i);while(i>0){ i=i/10;m=m+1;} printf(“%dn”,m);return 0;} 6.6 大小写

2016.3.30 模块考试原题:

输入一个字符,判断并输出其为大写或小写。

1.2.3.4.5.6.7.8.9.10.11.#include int main(){ char i;

scanf(“%c”,&i);if(i>='A'&&i<='Z')printf(“大写n”);else if(i>='a'&&i<='z')printf(“小写n”);return 0;} 6.9 最后1 项为特别小的数的多项式之和

计算 1/1+1/3+1/5+„, 直到最后 1 项的值小于 10-6 为止, 多项式累加和保留2位小数。提示:

(1)第 1 项 =1,第二项 =1/3,第三项 =1/5......每一项的值越来越小,小于 10-6 的是哪一项呢?

(2)10-6 在程序中的表示方式: 0.000001 或者 1e-6 1.2.3.4.5.6.7.8.9.10.11.12.#include int main(){ float a=1,b=0;

while((1.0/a)>0.000001){ b=b+1.0/a;a=a+2;}

printf(“%.2fn”,b);

return 0;}

6.10 最大值的位置

从键盘上输入8个数,输出最大数是第几个输入的。

1.2.3.4.5.6.7.8.9.10.11.12.13.14.15.16.17.#include int main(){ int a,b,i,c;scanf(“%d”,&a);c=1;for(i=2;i<=8;i++){ scanf(“%d”,&b);if(b>a){ a=b;c=i;}

}

printf(“最大数在第%d位置n”,c);return 0;} 6.11 区间输出

m、n从键盘输入,将区间[m,n)内的不能被3整除的数输出。

1.2.3.4.5.#include int main(){ int a,b,i,c;scanf(“%d%d”,&a,&b);

for(i=a;i

if(i%3!=0)printf(“%d,”,i);}

printf(“n”);return 0;} 6.14 统计及格人数

从键盘输入10个学生的成绩,要求统计及格人数并输出。

1.2.3.4.5.6.7.8.9.10.#include int main(){ int a,b,i=0;for(a=1;a<=10;a++){ scanf(“%d”,&b);if(b>=60)i=i+1;} printf(“及格人数=%d个n”,i);

return 0;}

6.16 寻找玫瑰花(单重循环)

如果一个 4 位数等于它的各位数字的 4 次方和,则这个4 位数称为“玫瑰花”数,例如 1634 就是一个玫瑰花数。要求用单重循环完成,即不使用穷举法,求出所有玫瑰花数。

1.2.3.4.5.6.7.8.9.10.11.12.13.14.#include int main(){ int a,b,i,d,r;for(a=1000;a<=9999;a++){ b=a/1000;i=a/100%10;d=a/10%10;r=a%10;

if(b*b*b*b+i*i*i*i+d*d*d*d+r*r*r*r==a)printf(“%dn”,a);}

return 0;}

6.17 鸡兔同笼问题之二

设在一只笼子里关着鸡和兔子共m只,笼子中的脚数有n,求鸡和兔各有多少只? m和n从键盘输入。

编程思路:穷举法。

1.2.3.#include int main(){ int a,b,i,d;4.5.6.7.8.9.10.11.12.13.14.15.scanf(“%d%d”,&a,&b);

if((a%2!=0)&&(b%2!=0))printf(“无此结果n”);else

for(i=1;i<=a;i++){ for(d=1;d<=a;d++){ if((i+d==a)&&(2*i+4*d==b))printf(“鸡=%d,兔=%dn”,i,d);} }

return 0;}

6.18 小写字符转换成大写输出 2016.3.30 模块考试原题:

连续输入15个小写字符,将他们转换成大写字符并输出。

小写转大写:字符-32 考点:字符输入输出,循环

1.2.3.4.5.6.7.8.9.10.#include int main(){ char a,b,i;for(i=1;i<=15;i++){ scanf(“%c”,&a);a=a-32;

printf(“%cn”,a);}

return 0;}

7.2 [n-200]区间满足条件的个数

n, k 从键盘上输入, 输出 [n-200] 间所有末位是k或者能被k整除的数的个数。

1.2.3.4.5.6.7.8.9.10.11.#include int main(){ int n,m,b,a=0;scanf(“%d%d”,&m,&n);

for(b=m;b<=200;b++){ if(b%n==0||b%10==n)a=a+1;}

printf(“%dn”,a);return 0;}

7.3 100匹马运100担货

匹马驮 100 担货,大马一匹驮3担,中马一匹驮 2 担,小马两匹驮1担,编写程序计算大 中 小马的个数,以例如 20,0,80 格式输出。1.2.3.4.5.6.7.8.9.10.11.12.13.#include int main(){ int n,m,b;for(b=0;b<=100;b++){ for(n=0;n<=100;n++){ for(m=0;m<=100;m++)

if((b+m+n==100)&&(3*m+2*n+b*0.5==100))printf(“%d,%d,%dn”,m,n,b);} }

return 0;} 7.4 数之和

输出两位数中不能被 4 或 5 整除的数之和。

1.2.3.4.5.6.7.8.9.10.#include int main(){ int m=0,b;for(b=10;b<=99;b++){ if(b%4!=0||b%5!=0)m=m+b;} printf(“%dn”,m);

return 0;}

7.5 聚餐问题

现有30人聚餐,其中可能有男人、女人和小孩,吃饭餐费共500元。每个男人30元,每个女人20元,每个小孩10元。问男人女人小孩各多少人?

输出每种可能,如男人0人、女人20人、小孩10人,则输出0,20,10↵

1.2.3.4.5.6.7.8.9.10.11.12.13.#include int main(){ int n,m,b;for(b=0;b<=30;b++){ for(n=0;n<=30;n++){ for(m=0;m<=30;m++)

if((b+m+n==30)&&(30*m+20*n+b*10==500))printf(“%d,%d,%dn”,m,n,b);} }

return 0;} 7.6 数组元素的输入输出

从键盘依次输入10个整数,按输入顺序的相反顺序(即逆序)进行输出。提示:

(1)首先打消想定义 a、b、c、d、e、f、g、h、i、j 的想法。(2)学会数组的声明、数组元素的输入和输出。

1.2.3.4.5.6.7.8.9.10.11.12.#include int main(){ int a[10],m,b;for(b=0;b<=9;b++)scanf(“%d”,&a[b]);for(b=9;b>=0;b=b-1)printf(“%d,”,a[b]);

printf(“n”);

return 0;}

7.12 输出最小数及其所对应的下标

从键盘上输入10个整数,编程输出其中最小的数以及其所对应的下标。要求用数组实现。提示:例如 89、23、44、55、77、11、34、20、35、30,这十个数中最小值为11,它在数组中的下标为 5。(1)第一段循环:给数组元素赋值;

(2)假定 最小值= 第一个数组元素,最小值的下标= 第一个数组元素的下标;(3)第二段循环:最小值和后面的 9 个数组元素比较;(4)输出结果;

1.2.3.4.5.6.7.8.9.10.11.12.13.14.15.16.#include int main()

{ int b,a[10],m=0,c=0;for(b=0;b<=9;b++){ scanf(“%d”,&a[b]);}

m=a[0];

for(b=0;b<=9;b++)

{ if(a[b]

return 0;}

7.13 查找数

已知数学集合A为{1,3,5,9,11,13,15,19,23,25}, 从键盘上输入一个自然数 n,若n在集合A中,则输出 n 在集合中的所处的位置,例如:输入 5,则输出其在集合中的 位置=3 ;输入 10,输出“无此数”。提示:

(1)本题涉及的的位置 = 数组元素的下标 +1 ;

(2)使用数组存储集合A,然后顺序遍历整个数组,如果找到(与n相等),即退出(break)并输出位置,如果没有找到,输出无此数。

1.2.3.4.5.6.7.8.9.10.11.12.13.#include int main()

{ int b,a[10]={1,3,5,9,11,13,15,19,23,25},m,c=0;scanf(“%d”,&m);

for(b=0;b<=9;b++){ if(m==a[b])

break;

else if(b==9&&m!=a[9])c=1;}

if(c==0)printf(“位置=%dn”,b+1);if(c==1)printf(“无此数n”);

return 0;}

7.14 英文字母大小写相互转换

从键盘输入一个英文字母,编程完成大小写相互转换。转换公式:小写字母=大写字母+32 提示:(x>='a'&&x<='z')x是小写字母(x>='A'&&x<='Z')x是大写字母

1.2.3.4.5.6.7.8.9.#include int main(){ char a;scanf(“%c”,&a);

if(a>='A'&&a<='Z')a=a+32;else if(a>='a'&&a<='z')a=a-32;printf(“%cn”,a);return 0;} 7.15 斐波拉契数列前n项之和(数组法)n 从键盘上输入,n 的范围为: 1<=n<=30

利用数组法编程输出斐波拉契数列: 1,1,2,3,5,8,13,21......输出这个数列 的前 n 项 之和。提示:

(1)第一段循环: 求出数列的前n项;(2)第二段循环:求前n项的和;

1.2.3.4.5.6.7.#include int main()

{ int a[30]={1,1},b,c=0,i;scanf(“%d”,&b);

for(i=2;i

printf(“%dn”,c);return 0;} 7.18 计算x的y次方

从键盘输入2个整数x和y,计算x的y次方并输出。

1.2.3.4.5.6.7.8.9.10.11.#include int main(){ int a,b,c=1,i;scanf(“%d%d”,&a,&b);

for(i=1;i<=b;i++){ c=c*a;} printf(“%dn”,c);

return 0;}

7.21 统计素数个数

统计 100-200 之间素数的个数,要求不使用数组完成.1.2.3.4.5.6.7.8.9.10.11.12.13.14.#include int main(){ int a,b=0,i;for(i=100;i<=200;i++){ for(a=2;a

break;}

if(i==a)b++;} printf(“%dn”,b);return 0;}

7.22 成绩评定

从键盘输入8个成绩,去掉最高分、最低分进行平均分计算,并输出(以5位小数形式),要求不用数组,只用循环完成。

1.2.3.4.5.6.#include int main(){ int i;float a,b,max,min,sum;scanf(“%f”,&a);sum=a;7.8.9.10.11.12.13.14.15.16.17.min=a;max=a;

for(i=2;i<=8;i++){ scanf(“%f”,&b);sum=sum+b;if(max

if(min>b)min=b;}

printf(“%.5fn”,(sum-max-min)/6);return 0;} 8.2 累加和大于s 时的最小项

s=1+2+3+4...+n , 从键盘上输入一正整数s , 求累加和大于 s 时的最小项数n 1.2.3.4.5.6.7.8.9.10.11.#include int main()

{ int a,b=0,i,c=0;scanf(“%d”,&a);

while(b<=a){ c=c+1;b=b+c;}

printf(“%dn”,c);return 0;} 8.5 分行控制输出斐波拉契数列前n项

n从键盘上输入,斐波拉契数列:1,1,2,3,5,8,13,21...求出这个数列的前n项并输出, 要求每隔4个换一行,最后一行输出时若不足 4 项也按一行输出。

1.2.3.4.5.6.7.8.9.10.11.12.13.14.15.16.#include int main()

{ int i,a[20]={1,1},c,b,k=2;scanf(“%d”,&c);printf(“1,1,”);for(i=2;i

{ a[i]=a[i-2]+a[i-1];printf(“%d,”,a[i]);k=k+1;if(k==4){ printf(“n”);k=0;}

} printf(“n”);17.18.return 0;}

8.6 输出图形之一

在屏幕上输出 * 组成的图形,行数从键盘输入。提示:

打印图形通常用两重循环实现,输出的行数、每一行的空格数和每一行星号数分别由各自的循环控制。

外层循环控制图形的行数,该图形一共有n行.第一个内循环,要考虑每行中,先输出若干个空格, 确定打印图案的起始位置,第二个内循环, 用来控制图案中的某一行的星号个数。

1.2.3.4.5.6.7.8.9.10.11.12.13.#include int main(){ int i,c,b,k;scanf(“%d”,&c);

for(b=1;b<=c;b++){ for(i=1;i<=c-b;i++)printf(“ ”);for(k=1;k<=2*b-1;k++)printf(“*”);printf(“n”);} return 0;} 8.7 若干成绩统计及格人数

从键盘输入若干学生的成绩,碰到输入非法成绩(输入负数或者超过100的数)时结束,要求统计及格人数并输出。提示:本题不涉及数组。

循环结束条件是非法成绩,因循环次数不确定,while 循环是首选。

1.2.3.4.5.6.7.8.9.10.11.12.#include int main(){ int i,c,b,k=0;scanf(“%d”,&i);

if(i>=60)k=k+1;while(i>=0&&i<=100){ scanf(“%d”,&i);if(i>=60)k=k+1;} printf(“及格人数=%d个n”,k-1);

return 0;}

8.10 输出所有的因子及其和

键盘输入正整数,输出该整数的所有因子,例如输入6,则输出1,2,3,6, 并求其所有因子的和。

提示:不涉及数组 假如正整数 n 除以m,结果是无余数的整数,那么我们称 m 就是 n 的因子。

1.2.3.4.5.6.7.8.9.10.11.12.13.14.15.#include int main(){ int i,c,v=0;scanf(“%d”,&c);

for(i=1;i<=c;i++){ if(c%i==0){ v=v+i;printf(“%d,”,i);

} } printf(“n”);

printf(“因子和=%dn”,v);return 0;} 8.13 天数计算-数组法

输入 年 月 日,计算是该年的第多少天? 提示:

建议用数组实现计算是该年的第多少天,即天数累计求和。分为两种情况:

1、整月的天数参与累加求和(考虑大月、小月、2月天数具体情况)

(4、6、9、11各30天,1、3、5、7、8、10、12各31天,平年2月28天,闰年2 月29天)

如果是闰年的2月,天数作一个修正。

闰年条件:四年一闰,百年不闰;四百年又闰

2、不完整月的天数直接用某日参与累加即可。

1.2.3.4.5.6.7.8.9.10.11.12.13.14.15.16.17.#include int main()

{ int i,c,a[13]={31,28,31,30,31,30,31,31,30,31,30,31},n[13]={31,29,31,30,31,30,31,31,30,31,30,31},b,m,x=0;scanf(“%d%d%d”,&c,&b,&m);

if((c%4==0&&c%100!=0)||(c%400==0)){ for(i=0;i

else

{ for(i=0;i

printf(“第%d天n”,x);18.19.return 0;} 8.14 计算某年某月有多少天-数组法

从键盘输入某年某月,然后计算并输出该年该月有几天。要求:用数组实现。

提示:事先将12个月对应的天数依次保存到数组,然后根据月份(数组下标)找对应的元素值(天数)。

(4、6、9、11各30天,1、3、5、7、8、10、12各31天,平年2月28天,闰年2月29天)如果是闰年的2月,天数作一个修正。

闰年条件:四年一闰,百年不闰;四百年又闰

1.2.3.4.5.6.7.8.9.10.11.12.#include int main()

{ int i,c,a[13]={31,28,31,30,31,30,31,31,30,31,30,31},n[13]={31,29,31,30,31,30,31,31,30,31,30,31},b,m,x=0;scanf(“%d%d”,&c,&b);

if((c%4==0&&c%100!=0)||(c%400==0)){ printf(“%d天n”,n[b-1]);} else

{ printf(“%d天n”,a[b-1]);}

return 0;}

8.15 输出图形之二

在屏幕上输出 * 组成的图形,行数n(为奇数)从键盘输入。提示:

菱形可以看做是一个正三角形和一个倒三角形的组合。

1.2.3.4.5.6.7.8.9.10.11.12.13.14.15.#include int main(){ int a,b,c,i;scanf(“%d”,&a);

for(i=1;i<=(a+1)/2;i++){ for(b=1;b<=(a+1)/2-i;b++)printf(“ ”);for(c=1;c<=2*i-1;c++)printf(“*”);printf(“n”);} for(i=1;i<=(a+1)/2-1;i++){ for(b=1;b<=i;b++)printf(“ ”);

for(c=1;c<=a-2*i;c++)16.17.18.19.20.printf(“*”);printf(“n”);}

return 0;}

8.16 数组冒泡排序法

从键盘上输入正整数 n(n<=50), 然后依次输入n个正整数,并保存到数组a,然后将这些整数进行升序排序,输出排序后的数组。提示:

本题数组元素个数不确定,可根据情况估计其上限定义数组,例如本题可定义 int a[50];1.2.3.4.5.6.7.8.9.10.11.12.13.14.15.16.17.18.19.20.21.22.#include int main()

{ int a[40],b,c,i,m;scanf(“%d”,&b);

for(i=0;ia[i+1]){ m=a[i];a[i]=a[i+1];a[i+1]=m;} } }

for(i=0;i

return 0;}

8.17 输出等差第n项值

给出一个等差数列的前两项a1,a2,输出第n项值。

例如:输入a1,a2 分别为1,4

n为100时,计算输出该数列第n项的值 提示: 不涉及数组

1.2.3.4.5.#include int main()

{ int b,c,i=0,m,n,s=1;scanf(“%d%d%d”,&b,&c,&m);i=c-b;6.7.8.9.10.11.for(n=1;n<=m-1;n++){ s=s+i;}

printf(“%dn”,s);return 0;} 8.21 求1!+2!+3!+4!+5!+......+n!数列之和

n从键盘输入,求1!+2!+3!+4!+5!+......+n!数列之和 提示:

不涉及数组.1.#include 2.int main()

3.{ int a,b,c=1,m=1;4.scanf(“%d”,&a);5.for(b=2;b<=a;b++)6.{ c=c*b;7.m=m+c;8.}

9.printf(“%dn”,m);10.}

9.1 判断某整数是否包含6 输入一个[1-100)的整数,判断该数是否包含6 ?

如果是(比如 16,63,69),则输出 yes,不是(比如29,78)则输出 no

1.2.3.4.5.6.7.8.9.10.11.12.#include int main(){ int i,c=0,b,s;scanf(“%d”,&b);c=b%10;s=b/10%10;if(c==6||s==6)printf(“yesn”);else printf(“non”);

return 0;}

408多项式和Ⅱ

求a+aa+aaa+aaaa+...+aaa..a(n个a),a和n的值从键盘输入。

1.2.3.4.5.6.7.8.9.10.11.12.13.14.#include int main(){ int a,n,c=0,i,k=1,z=0;scanf(“%d %d”,&a,&n);for(i=1;i<=n;i++){ c=c+k*a;z=z+c;k=k*10;} printf(“%dn”,z);

return 0;}

409弹跳小球

小球从100米高度落下,每次落地后反弹回原高度的1/2再落下,求小球第n次落地时总共经过的路程,结果保留2位小数。n从键盘输入。

1.2.3.4.5.6.7.8.9.10.11.12.13.14.#include int main(){ float n,b=100,sum=0,i=1,z=100;scanf(“%f”,&n);for(i=1;i

return 0;}

411乘法口诀表

输出九九乘法口诀表。

1.2.3.4.5.#include int main(){ int x,y;scanf(“n”);6.7.8.9.10.11.12.13.for(x=1;x<=9;x++){ for(y=1;y<=x;y++){ printf(“%d*%d=%d ”,x,y,x*y);} printf(“n”);} return 0;} 412猴子吃桃

猴子第一天摘了若干个桃子,吃了一半,不过瘾,又多吃了1个。第二天将剩余的桃子又吃掉一半,并且又多吃了1个。此后每天都是吃掉前一天剩下的一半零一个。到第n天再想吃时,发现只剩下1个桃子,问第一天它摘了多少桃子?天数n从键盘输入。

1.2.3.4.5.6.7.8.9.10.11.12.#include int main(){ int sum=1,i,n;scanf(“%d”,&n);for(i=1;i

return 0;}

413鸡蛋数

有一篮子鸡蛋,如果每次拿2个最后剩1个,每次拿3个最后剩2个,每次拿4个最后剩3个,每次拿5个最后剩4个,输出篮子中的鸡蛋数目。

1.2.3.4.5.6.7.8.9.10.11.#include int main(){ int a,i;

for(i=1;i<100;i++){ a=i;

if(a%2==1&&a%3==2&&a%4==3&&a%5==4)printf(“%dn”,a);} return 0;} 414将军点兵

一将军带兵出征前清点人数,士兵按从1到5排队报数,最后一个士兵报的数是1;按从1到6排队报数,最后一个士兵报的数是5;按从1到7报数,最后一个士兵报的数是4;再按从1到11排队报数,最后一个士兵报的数是10。计算至少(至少,至少)有多少士兵?

1.2.#include int main()3.4.5.6.7.8.9.10.11.{ int a,i;

for(i=1;i<3000;i++){ a=i;

if(a%5==1&&a%6==5&&a%7==4&&a%11==10)printf(“%dn”,a);} return 0;}

415三色球

一个袋子里装有3个红球、5个白球和6个黑球,要任意取出8个球,且其中必须有白球,输出可能的方案数目。

1.2.3.4.5.6.7.8.9.10.11.12.13.14.15.16.17.#include int main(){ int sum=0,i,j,k,a;

for(i=1;i<=5;i++)for(j=0;j<=3;j++)

for(k=0;k<=6;k++){ a=i+j+k;if(a%8==0)sum=sum+1;else

sum=sum+0;}

printf(“%dn”,sum);return 0;} 416换钱

要将100元人民币兑换成5元、10元和20元纸币,输出兑换方法的总数。

1.2.3.4.5.6.7.8.9.10.11.12.13.#include int main(){ int sum=0,i,j,k,a;

for(i=0;i<=20;i++)for(j=0;j<=10;j++)

for(k=0;k<=5;k++){

a=i*5+j*10+k*20;if(a==100)sum=sum+1;else

sum=sum+0;14.15.16.17.}

printf(“%dn”,sum);return 0;}

417百钱买百鸡

百钱买百鸡问题:鸡翁一值钱五,鸡母一值钱三,鸡雏三值钱一。百钱买百鸡,问鸡翁、鸡母、鸡雏各几何,输出所有的买法,鸡翁、鸡母、鸡雏间以逗号隔开。

1.2.3.4.5.6.7.8.9.10.11.12.13.14.15.#include int main(){ int b,i,j,k,a;

for(i=0;i<=20;i++)for(j=0;j<=33;j++)

for(k=0;k<=100;k++){

a=i*5+j*3+k/3;b=i+j+k;

if(a==100&&b==100&&k%3==0)printf(“%d,%d,%dn”,i,j,k);} return 0;} 418百变图形(1)

在屏幕上输出 * 组成的图形,行数和 * 数从键盘输入。

提示:输出的行数、每一行的空格数和每一行星号数分别由各自的循环控制。

1.2.3.4.5.6.7.8.9.10.11.12.13.14.15.16.17.#include int main(){ int b,a,i,j,k;scanf(“%d %d”,&a,&b);for(i=a;i>=1;i=i-1){ for(k=i-1;k>=1;k=k-1)printf(“ ”);for(j=1;j<=b;j++){ printf(“*”);} printf(“n”,a);} return 0;} 419百变图形(2)

在屏幕上输出 * 组成的图形,行数从键盘输入。1.2.3.4.5.6.7.8.9.10.11.12.13.14.15.#include int main(){ int b,a,i,j,k;scanf(“%d”,&a);for(i=a;i>=1;i=i-1){ for(k=i-1;k>0;k=k-1)printf(“ ”);for(j=2*i+1;j<=2*a+1;j=j+1)printf(“*”,j);printf(“n”);} return 0;} 420百变图形(3)

在屏幕上输出 * 组成的图形,行数(为奇数)从键盘输入。

1.2.3.4.5.6.7.8.9.10.11.12.13.14.15.16.17.18.19.20.21.22.23.24.25.26.#include int main(){ int x = 0,i = 0,j = 0;scanf(“%d”,&x);

for(i = 0;i <(x+1)/2;i++){

for(j = 0;j <((x-(2*i+1))/2);j++)printf(“ ”);

for(j = 0;j <(2*i + 1);j++)printf(“*”);

printf(“n”);}

for(i = 0;i <(x-1)/2;i++){

for(j = 0;j <(i+1);j++)printf(“ ”);

for(j = 0;j<(x-(i+1)*2);j++)printf(“*”);printf(“n”);}

return 0;}

422数字翻转 从键盘输入一个整数,将该数翻转输出。

1.2.3.4.5.6.7.8.9.10.11.12.13.14.15.16.17.#include int main(){ int b,a,c,d,i,j,k;scanf(“%dn”,&b);if(b<100){a=b/10;c=b%10;printf(“%dn”,c*10+a);}

else if(b>100&&b<1000){d=b/100;a=(b/10)%10;c=b%10;printf(“%dn”,c*100+a*10+d);} else { i=b/1000;d=(b/100)%10;a=(b/10)%10;c=b%10;printf(“%dn”,c*1000+a*100+d*10+i);} return 0;} 第N个素数

输出1000以内的第n个素数,n从键盘输入。

1.2.3.4.5.6.7.8.9.10.11.12.13.14.15.16.17.18.19.20.21.22.23.24.#include int main(){ int a,b=0,c=2,m,n=1;scanf(“%d”,&a);while(c<1000){ while(b

break;}

if(b==c){

n++;} c++;b=1;

if(n==a)break;} printf(“%dn”,c-1);25.26.return 0;}

百变图形(4)

输入一个正整数,输出如下图形。

测试用例 1 3↵

1↵

2↵ 3

3↵

2↵

1↵

1.2.3.4.5.6.7.8.9.10.11.12.13.14.15.16.17.18.19.20.21.22.23.24.25.26.27.28.29.30.31.32.33.34.#include int main(){ int a,x=0,y,z=1,d=1;

int i;scanf(“%d”,&a);

while(x

while(x

printf(“ ”);z++;} y=0;

while(y<(x+1)*2+1){ z=1;if(x==0){ printf(“%d”,d);y++;break;} else { if((y==0||y==(x+1)*2)&&x!=0){ printf(“%d”,d);35.36.37.38.39.40.41.42.43.44.45.46.47.48.49.50.51.52.53.54.55.56.57.58.59.60.61.62.63.64.65.66.67.68.69.70.71.72.73.74.75.76.77.78.} else

{ printf(“ ”);} }

y++;} printf(“n”);x++;d=d+1;} while(x>=a&&x

int g;g=a;

if(x==a+a-2){ z=0;}

while(z<=x+1-a){

printf(“ ”);z++;} y=0;while(y<(a+a-1-x)*2+1){ z=0;

if(x==a+a-2){

printf(“%d”,d-2);y++;

break;}

else {

if(y==0||y==(a+a-1-x)*2){

printf(“%d”,d-2);} 79.80.81.82.83.84.85.86.87.88.89.90.91.92.93.else {

printf(“ ”);} } y++;

}

printf(“n”);x=x+1;d=d-1;} } return 0;} 505最小数及位置

从键盘上输入n个数(n也从键盘输入),输出其中最小的数以及该数在数组中的位置。

1.2.3.4.5.6.7.8.9.10.11.12.13.14.15.16.17.18.19.20.21.22.#include int main(){ int n,a[10],i,j=0,b,min;scanf(“%d”,&n);for(i=0;i

for(i=1;i

if(a[i]

min=a[i];j=i;} else

{ continue;} } printf(“最小数%d位于第%d个n”,min,j+1);

return 0;}

506数字翻转

从键盘输入一个整数,将该数翻转输出。

提示:将分离出的整数的每一位数字保存到数组中,然后需要判断前几位是否为0,如果为0则前几位不输出。

1.int i,j,k,b=0,c=1,aa=0;2.3.4.5.6.7.8.9.10.11.12.13.14.15.16.17.18.19.aa=a;

for(i=1;a>=10;i++)a=a/10;

for(j=0;j

num[j]=aa%10;aa=aa/10;} for(k=1;k

printf(“%dn”,b);return 0;} 418百变图形(1)

在屏幕上输出 * 组成的图形,行数和 * 数从键盘输入。

*****↵

*****↵

*****↵ *****↵

提示:输出的行数、每一行的空格数和每一行星号数分别由各自的循环控制。

1.2.3.4.5.6.7.8.9.10.11.12.13.14.15.16.17.#include int main(){ int b,a,i,j,k;scanf(“%d %d”,&a,&b);for(i=a;i>=1;i=i-1){ for(k=i-1;k>=1;k=k-1)printf(“ ”);for(j=1;j<=b;j++){ printf(“*”);} printf(“n”,a);} return 0;} 419百变图形(2)

在屏幕上输出 * 组成的图形,行数从键盘输入。

*↵

***↵

*****↵ *******↵

1.2.3.4.5.6.7.8.9.10.11.12.13.14.15.#include int main(){ int b,a,i,j,k;scanf(“%d”,&a);for(i=a;i>=1;i=i-1){ for(k=i-1;k>0;k=k-1)printf(“ ”);for(j=2*i+1;j<=2*a+1;j=j+1)printf(“*”,j);printf(“n”);} return 0;} 420百变图形(3)

在屏幕上输出 * 组成的图形,行数(为奇数)从键盘输入。

*↵

***↵ *****↵

***↵

*↵

1.2.3.4.5.6.7.8.9.10.11.12.13.14.15.#include int main(){ int x = 0,i = 0,j = 0;scanf(“%d”,&x);

for(i = 0;i <(x+1)/2;i++){

for(j = 0;j <((x-(2*i+1))/2);j++)printf(“ ”);

for(j = 0;j <(2*i + 1);j++)printf(“*”);

printf(“n”);} 16.17.18.19.20.21.22.23.24.25.26.for(i = 0;i <(x-1)/2;i++){

for(j = 0;j <(i+1);j++)printf(“ ”);

for(j = 0;j<(x-(i+1)*2);j++)printf(“*”);printf(“n”);}

return 0;}

第N个素数

输出1000以内的第n个素数,n从键盘输入。

1.2.3.4.5.6.7.8.9.10.11.12.13.14.15.16.17.18.19.20.21.22.23.24.25.26.#include int main(){ int a,b=0,c=2,m,n=1;scanf(“%d”,&a);while(c<1000){ while(b

break;}

if(b==c){

n++;} c++;b=1;

if(n==a)break;} printf(“%dn”,c-1);return 0;}

下载西工大C语言POJ作业word格式文档
下载西工大C语言POJ作业.doc
将本文档下载到自己电脑,方便修改和收藏,请勿使用迅雷等下载。
点此处下载文档

文档为doc格式


声明:本文内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:645879355@qq.com 进行举报,并提供相关证据,工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。

相关范文推荐

    C语言程序设计--大作业

    C语言程序设计大作业 编写程序,实现单链表的插入、删除、输出、查找、统计以及销毁功能。 单链表的每个结点存储一名学生的信息,包括:学号、姓名、性别、年龄、三门课程(高数、......

    C语言作业答案

    厦门大学公共课 《C语言程序设计》 教材习题答案第三章 结构化程序设计 一、思考题 1、顺序结构的语句有哪些? 表达式语句,空语句,复合语句 2、从程序控制的角度看,复合语句是......

    c语言第六次作业

    第六次作业:指针 (以下题目如无特殊声明,请使用指针技术实现,尽量不要使用数组作为形参,也尽量避免使用数组下标引用数组元素) 1. 数组元素循环移位 有n个整数,使前面的各整数......

    c语言课程设计作业(推荐)

    课程设计 设计一个学生成绩管理系统,该系统记录了全班同学语文数学英语3门课程的成绩,并对成绩进行管理。主要功能如下: 1)具备对成绩的管理功能(添加、删除、排序) 2)具备对课......

    西工大DSP大作业

    实验1 基于CCS的简单的定点DSP程序 一、实验要求 1、自行安装CCS3.3版本,配置和运行CCS 2、熟悉CCS开发环境,访问读写DSP的寄存器AC0-AC3, ARO-AR7, PC, T0-T3 3、结合C5510的......

    C语言作业实验报告[五篇材料]

    2, switch语句实现 #include void main { int score; printf("Please input a score:n"); scanf("%d",&score); if(score100) printf("Please input the right sc......

    大连理工大学c语言大作业

    程序设计大作业总结报告 ——的点餐/帐目信息管理系统 选题意义; 餐厅账目繁多,通过本系统可以实现餐厅管理的自主化。更加适应这个信息化的社会。通过对账目、订单的管理与排......

    《C语言大作业》设计说明书大纲

    《C语言大作业》设计说明书大纲 1.课程认识 可以围绕目的、性质、任务等方面写 2.课题选择 可以围绕课题 背景、意义、实用性等方面写 3.总体设计与分析 总体框架图及简要功能......