c语言题库

更新时间:2023-12-21 19:22:01 阅读量: 教育文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

输入平面坐标系中2点的坐标,输出它们之间的距离

#include #include int main() {

float a,b,c,d,e;

scanf(\ e=sqrt((c-a)*(c-a)+(d-b)*(d-b)); printf(\ return 0; }

输入一个正整数n,输出n度的正弦、余弦函数值。注意调用正余弦函数,要加#,函数参数为弧度。

#include #include void main() {

float a,c,d,pi; scanf(\ pi=3.1415926; c=sin(a/180*pi); d=cos(a/180*pi);

printf(\ return 0; }

输入一个正整数N和N个正整数,统计其中素数的和。

Input

多组测试数据,每组输入一个正整数N(1≤N≤100)和N个正整数(≥3),用空格分隔。

输出所有素数,用空格隔开;再输出这些素数和。

输入一个整数,判断是奇数还是偶数

#include int main() {

int a,b;

scanf(\ b=a%2; if (b==0)

printf(\ else

printf(\ return 0; }

给一个不多于5位的正整数,要求:一、求它是几位数,二、逆序打印出各位数字 #include int main() {

int x,a,b,c,d,e; scanf(\ a=x/10000;

b=x000/1000; c=x00/100; d=x0/10; e=x/1; if(a!=0)

printf(\ else if(b!=0)

printf(\ else if(c!=0)

printf(\ else if(d!=0)

printf(\ else

#include #include int main() {

float a,b,c,x1,x2,delta;

scanf(\ delta=b*b-4*a*c; if(a==0&&b==0) printf(\

else if(a==0&&b!=0) {

x1=-c/b;

printf(\ }

else if(delta==0&&a!=0)

{

x1=-b/(2*a); printf(\ }

else if(delta>0&&a!=0) {

x1=(-b+sqrt(b*b-4*a*c))/(2*a); x2=(-b-sqrt(b*b-4*a*c))/(2*a); printf(\ } else

printf(\ return 0; }

printf(\ return 0; }

输入三角形的三边长,求三角形面积。为简单起见,设输入的三边长a,b,c能构成三角形。 #include #include int main() {

float a,b,c,p,s;

scanf(\ p=(a+b+c)/2;

s=sqrt(p*(p-a)*(p-b)*(p-c)); printf(\ return 0; }

如果a既是b的整数倍又是c的整数倍,则输出Yes,否则输出No

#include int main() {

int a,b,c;

scanf(\ if(a%b==0&&a%c==0) printf(\ else

printf(\

return 0; }

输入一个整数年份,要求判断是否是闰年

#include int main() {

int year;

scanf(\ if (year@0==0) printf(\

else if (year%4==0&&year0!=0) printf(\ else

printf(\ return 0; }

求ax2+bx+c=0方程的实根。a,b,c由键盘输入. #include #include int main() {

float a,b,c,x1,x2,delta;

scanf(\ delta=b*b-4*a*c; if(a==0&&b==0) printf(\

else if(a==0&&b!=0) {

x1=-c/b;

printf(\ }

else if(delta==0&&a!=0) {

x1=-b/(2*a); printf(\ }

else if(delta>0&&a!=0) {

x1=(-b+sqrt(b*b-4*a*c))/(2*a); x2=(-b-sqrt(b*b-4*a*c))/(2*a); printf(\

} else

printf(\ return 0; }

输入三个整数x,y,z,请把这三个数由大到小输出

#include int main() {

int a,b,c,max;

scanf(\ if(a

{max=a;a=b;b=max;} if(a

{max=a;a=c;c=max;} if(b

{max=b;b=c;c=max;} printf(\ return 0; }

一个5位数,判断它是不是回文数。即12321是回文数,个位与万位相同,十位与千位相同。

#include int main() {

int a,b,c,d,e,x; scanf(\ a=x/10000;

b=x000/1000; c=x00/100; d=x0/10; e=x;

if (a==e&&b==d) printf(\ else

printf(\ return 0; }

计算1+2+??+N的和。 #include int main()

{

int N,i,s; i=1; s=0;

scanf(\ while (i<=N) {

s=s+i; i ++ ; }

printf(\ return 0; }

计算n!(1×2×3×??×n) #include int main() {

int N,i,s; i=1; s=1;

scanf(\ if (N<=10&&N>=1) while (i<=N) { s=s*i; i ++ ; }

printf(\ printf(\ return 0; }

输出1-2+3-4...+n的值 #include #include int main() {

int N,i,s; i=1; s=0;

scanf(\ while (i<=N) {

s=s+i*pow(-1,i+1); i ++ ;

}

printf(\ return 0; }

两个数能同时被一个数所整除,这个数就是公约数 #include int main() {

int a,b,m,n,t;

scanf(\ if(a

m=a;n=b; while (n!=0) {

t=m%n; m=n; n=t; }

printf(\ return 0; }

输入一行字符,分别统计出其中英文字母、空格、数字和其他字符的个数。 #include int main() {

int charaters,blanks,digitals,others; char ch;

charaters=0; blanks=0; digitals=0; others=0; ch=getchar(); while (ch!='\\n') {

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

charaters++; else if(ch==' ') blanks++;

else if(ch>='0'&&ch<='9') digitals++; else

others++; ch=getchar(); }

printf(\ printf(\ printf(\ printf(\ return 0; }

输入为多组测试数据。每组一行,每行输入2个整数a和b #include int main() {

int x,y;

while(scanf(\{ printf(\}

return 0; }

有一分数序列:2/1,3/2,5/3,8/5,13/8,21/13,?? 计算这个数列的前n项和。 #include int main() {

int i,n,t,num,demon; float s;

while (scanf(\ {

s=0; num=2; demon=1;

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

{s=1.0*num/demon+s; demon=num+demon; t=num;

num=demon; demon=t; }

printf(\ }

return 0; }

输入一个整数,求它的各位数字之和及位数。例如-234的各位数字之和是9,位数是3.

Input

多组测试数据,每组输入一个整数 求它的各位数字之和及位数

#include int main() {

int n,count,sum;

while (scanf(\ {

if (n<0) n=-n; count=0; sum=0; do {

sum=n+sum; count++; n/=10;

}while (n!=0);

printf(\ }

return 0; }

个数如果恰好等于它的因子之和,这个数就称为“完数”。例如6的因子有:1,2,3;由于6=1+2+3,所以6是完数。要求对于输入的任意一个正整数,验证它是否是完数. 多组测试数据,输入正整数n(n≥2)。 如果是完数,输出“xxx is cloze.”;否则输出“xxx is not cloze.”。这里的xxx是输入的整数。 #include int main() {

int sum,i,n;

while (scanf(\ {

sum=0;

for(i=2;i<=n;i++) {

if(n%i==0) sum=n/i+sum; }

if(sum==n)

printf(\ else

printf(\

}

return 0; }

多组测试数据

首先输入1个整数n表示测试组数

然后每行首先输入1个整数m,再输入m个整数

对于每组测试数据输出1行,内容为m个整数的最大值 #include int main() {

int i,j,max,num,m,n; scanf(\ for(i=1;i<=n;i++) {

scanf(\ scanf(\ max=num;

for(j=2;j<=m;j++) {

scanf(\特别注意不能换行,否则不输出; if(max

printf(\ }

return 0; }

输入一批正整数(以零或负数为结束标志),求其中的偶数和。

多组测试数据,每组输入一批正整数(以零或负数为结束标志)

#include int main() {

int n, sum;

while ( scanf(\ {

sum=0; while(n>0) {

if(n%2==0) sum=n+sum;

scanf(\再输一遍 }

printf(\ }

return 0; }

输入实数x和正整数n,计算x^n(n个x相乘),不允许调用函数pow()函数来计算。

多组测试数据,输入实数x和正整数n 输出x^n,结果保留两位小数

#include int main() {

int m,i; float x,s;

while ( scanf(\注意输入 { s=1;

for(i=1;i<=m;i++) s=s*x;

printf(\ }

return 0; }

输入一个整数N和N个整数,计算这N个整数的和。 多组测试数据,每组先输入一个整数n(1≤n≤100),然后再输入n个整数,用空格分隔。 #include

int main() {

int s, n, num ; int i, temp;

while (scanf(\ {

s = 0;

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

scanf(\ s=s+num;

}

printf(\ }

return 0; }

输入一个正整数n,计算1-2/3+3/5-4/7+5/9-6/11+......的前n项之和。 多组测试数据,每组输入一个正整数n 输出数列的前n项之和,保留两位小数。 #include int main() {

int flog,n,i,num,demon; float s;

while (scanf(\ {

s=0; //注意赋s值为0 num=1; demon=1; flog=1;

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

s=s+num*1.0/demon*flog;//注意要乘以1.0 否则num/demon=0 flog=-flog;

demon=demon+2; num++; }

printf(\

} return 0;

}

请编写程序输出金字塔图形。

多个测试数据。每个测试数据输入一个整数n(1 <= n <= 9) 输出n层金字塔。

#include int main() {

int n,i,j,k;

while (scanf(\ {

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

for (j=1;j<=n-i;j++) //注意j的范围 printf(\

for (k=1;k<2*i;k++) //注意k的范围 printf(\ printf(\ } }

return 0; }

输入一个整数,从高位开始逐位分割并输出。例如输入123456,逐位输出:1,2,3,4,5,6。 多组测试数据,每组输入一个整数 逐位输出其各位数字 #include #define N 10 int main() {

int n,i,a[N],k;

while (scanf(\ { k=0; if (n<0) n=-n;

for(i=n;i>0;i/=10) {

a[k++]=i; }

for(i=k-1;i>=0;i--) {

printf(\ if (i!=0)

printf(\ } }

return 0; }

第一行输入1个整数n,表示测试组数

然后是n行,每行2个整数a和b,中间用空格隔开 对于每组测试数据,要求输出一行,分别是a+b的值

#include int main() {

int n; int i,s,a,b;

scanf(\ for(i=1;i<=n;i++) {

scanf(\ s=a+b;

printf(\ }

return 0; }

多组测试数据,每组1行,输入2个整数

输入2个0 0的时候结束且该组数据不需要处理 对于每组测试数据输出一行,内容为2个数的和

#include int main() {

int n; int i,s,a,b;

while(scanf(\ {

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

s=a+b;

printf(\ }

return 0; }

输入一个正整数N和N个正整数,统计其中素数的和。

多组测试数据,每组输入一个正整数N(1≤N≤100)和N个正整数(≥3),用空格分隔。

输出所有素数,用空格隔开;再输出这些素数和。

#include int main() {

int i, j, n, m,flag, s;

while (scanf(\输入第一个数n,表示后面有N个数 {

s=0;

for(i = 1;i <= n;i++) //输入n个数 {

flag=0;

scanf(\ if (m > 1) {

for (j=2;j

if (m%j==0) flag=1;

}

if (flag==0) {

printf(\ s=s+m; } } }

printf(\

}

return 0; }

输倒金字塔

#include //在该代码上进行修改就可以 int main( ) {

int i, j, n;

while (scanf(\ {

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

for (j = 1; j <= n- i; j++) printf(\

for (j = 1; j <= 2*i -1; j++ ) printf (\ printf(\ }

for (i = n-1; i >= 1; i-- ) // {

for (j = 1; j <= n- i; j++) printf(\

for (j = 1; j <= 2*i -1; j++ ) printf (\ printf(\ } }

return 0; }

数字菱形

输出由数字组成的菱形图案

多组测试数据,每组输入一个数字(1≤n≤9)。

由数字组成的菱形图案。其中,菱形图案当中一层的数字正好是输入的数字。 #include //在该代码上进行修改就可以 int main( ) {

int i, j, n;

while (scanf(\ {

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

for (j = 1; j <= n- i; j++) printf(\

for (j = 1; j <= 2*i -1; j++ ) printf (\ printf(\ }

for (i = n-1; i >= 1; i-- ) // {

for (j = 1; j <= n- i; j++) printf(\

for (j = 1; j <= 2*i -1; j++ ) printf (\ printf(\ } }

return 0; }

平方和与立方

给定一段连续的整数,求出他们中所有偶数的平方和以及所有奇数的立方和。 输入数据包含多组测试实例,每组测试实例包含一行,由两个整数m和n组成。

对于每组输入数据,输出一行,应包括两个整数x和y,分别表示该段连续的整数中所有偶数的平方和以及所有奇数的立方和。 你可以认为32位整数足以保留 #include int main() {

int a,b,s1,s2,i,t;

while (scanf(\输入第一个数n,表示后面有N个数 {

s1=0; s2=0; if (a>b) { t=a; a=b; b=t; }

for(i=a;i<=b;i++) {

if (i%2==0) s1=i*i+s1; else

s2=i*i*i+s2;

}

printf(\ }

return 0; }

输入一个实数x,计算多项式x+(x^2)/2!+(x^3)/3!+...的和,直到末项的绝对值小于10^-5(保留三位小数)

多组测试数据,每组输入一个实数x 输出多项式的和, 保留三位小数。

#include //在该代码上进行修改就可以 #include int main( ) {

int i;

float s,n,a;

while (scanf(\ {

i=2; a=1; s=n;

while (pow(n,i)/(a*1.0)>pow(10,-5)) {

a=a*1.0*i;

s=s+pow(n,i)/(a*1.0); i++; }

printf(\ }

return 0; }

给你n个整数,求他们中所有奇数的乘积。

输入数据包含多个测试实例,每个测试实例占一行,每行的第一个数为n,表示本组数据一共有n个,接着是n个整数,你可以假设每组数据必定至少存在一个奇数。 输出每组数中的所有奇数的乘积,对于测试实例,输出一行。 int main( ) {

int i, m, n,s;

while (scanf(\ {

s=1;

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

scanf(\ if (m%2!=0) s=s*m; }

printf(\ }

return 0; }

还有一些输入是以上几种情况的组合,具体根据题目对前面几种情况进行组合 比如题目要求是多组测试数据

每组测试数据首先输入一个整数n(如果n=0就表示结束) 然后再输入n个整数 这类题目输入格式如下:

int main() {

int n,i;

while(scanf(\ {

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

....//每次输入一个数,共循环n次,需要的时候做其他处理 }

} }

输#include int main() {

int n,i,s,m;

while(scanf(\ {

s=0;

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

scanf(\ s=s+m; }

printf(\ }

return 0; }

掌握了输入之后,我们看下多组测试数据输出的情况。

一般情况下,对于每一组数据输入后先处理然后输出结果,再输入第2组数据,输出仅仅是换行而已

int main() {

int a,b,c;

while(scanf(\ {

c=a+b;

printf(\注意后面的\\n }

输#include int main() {

int a,b,c,s;

while(scanf(\ {

s=0; s=a+b+c;

printf(\注意后面的\\n } return 0; }

对于每一组数据输入后先处理然后输出结果,再输入第2组数据, 输出数据之间要求有一个空行 多组测试数据,每组输入3个整数

对于每组测试数据,输出1行,内容为输入的3个数的和,每2组测试数据之间有1个空行 #include int main() {

int a,b,c,s,flag=0;

while(scanf(\ {

s=a+b+c;

if( flag>0) printf(\

printf(\注意后面的\\n flag++;

} return 0; }

多个测试数据。每个测试数据一行,输入整数n. 输出nn乘法口诀表。

每个乘法口诀表中的任何一个乘式占6列,不足6列的在后面补空格。同一行2个乘式之间有一个空格。

两个乘法口诀表之间有一个空行。

#include int main() {

int i, k, n ,s;

while (scanf(\输入第一个数n,表示后面有N个数 {

s=0;

for(i=1;i<=n;i++) //输入n个数 {

for(k=1;k<=i;k++) {

s=k*i;

printf(\ }

printf(\ }

printf(\ }

return 0; }

数列的定义如下:

数列的第一项为n,以后各项为前一项的平方根,求数列的前m项的和(float型)。

输入数据有多组,每组占一行,由两个整数n(n<10000)和m(m<1000)组成,n和m的含义如前所述。

对于每组输入数据,输出该数列的和,每个测试实例占一行,要求精度保留2位小数。

#include #include int main() {

int i, m, n ; float a,s;

while (scanf(\输入第一个数n,表示后面有N个数 {

a=n; s=0;

for (i=1;i<=m;i++) {

s=s+a; a=sqrt(a);

}

printf(\ }

return 0; }

代《张邱建算经》中的“百鸡问题”是一道很有名的算题。题目内容是:用100元买100只鸡,大公鸡5元1只,母鸡3元1只,小鸡1元3只。问各能买多少只?

输出所有的可能,要求一种可能一行,分别输出三个整数,代表公鸡,母鸡及小鸡的个数,中间用一个空格隔开

输出的时候要求,先输出公鸡数最少的可能,公鸡数如果相同的几种情况,先输出母鸡数最少的情况

#include int main() {

int a,b,c;

for(a=0;a<=20;a++) {

for(b=0;b<=33;b++) {

for(c=0;c<=300;c+=3) {

if(5*a+3*b+c/3.0*1.0==100&&a+b+c==100) printf(\ } } }

return 0; }

输入三角形的三条边,判断是否是直角三角形 输入三角形3条边(均为整数)

如果3条边组成的是直角三角形,输出yes否则输出no #include int main()

{

int a,b,c,max;

scanf(\ max=a; if (a

{max=a;a=b;b=max;} if(a

{max=a;a=c;c=max;} #include int main() {

float r,h,s,pi; s=0;

pi=3.1415926;

scanf(\

s=2*pi*r*r*1.0+2*pi*r*h*1.0; printf(\ return 0; }

if(b

{max=b;b=c;c=max;} if (a*a==b*b+c*c) printf(\ else

printf(\ return 0; }

输入底面半径r和高h

输出圆柱体的表面积,保留3位小数 #include int main() {

float r,h,s,pi; s=0;

pi=3.1415926;

scanf(\

s=2*pi*r*r*1.0+2*pi*r*h*1.0; printf(\ return 0; }

求阶乘和

多组测试数据。每组一行,输入一个整数n, 1 <= n <= 10 每组数据输出一行,计算1!+2!+...+n!的和 #include

int main() {

int a, x,s,i;

while (scanf(\输入x值 {

a=1; s=0;

for (i=1;i<=x;i++) {

a=a*i; s=s+a; }

printf(\ }

return 0; }

多组测试数据。每组数据一行输入一个正整数。

对于每组测试数据判断输入的数是否是素数。如果是则在一行里输出Yes,否则输出No 注意 1不是素数 #include int main() {

int flog,i,x;

while (scanf(\输入x值 {

flog=1; if (x!=1) {

for (i=2;i

if (x%i==0) flog=0; }

if (flog==1) printf(\ else

printf(\ } else

printf(\ }

return 0; }

告诉你n,你能笔算计算出下面的值吗?

1+1/(1+2)+1/(1+2+3)+1/(1+2+3+4)+……+1/(1+2+3+4+……+n) 想一想,笔算如何快速算出来。

当然这里我们用计算机来实现,你可以不用那种办法拉。 多组测试数据,每组输入一个非负整数N

对于每组数据在一行输出1+1/(1+2)+1/(1+2+3)+1/(1+2+3+4)+??+1/(1+2+3+4+??+n)的值,保留4位小数

#include int main() {

int a,x,i; float s;

while (scanf(\ {

a=0; s=0;

for (i=1;i<=x;i++) {

a=a+i; s=s+1.0/a; }

printf(\ }

return 0; }

猴子吃桃:每天吃一半多一个,最后只剩一个,问一共有多少个 #include int main() {

int a,x,i,s;

while (scanf(\ {

s=1;

for (i=1;i

s=s+1; s=2*s; }

printf(\

}

return 0; }

输入一个整数n,计算

1+1/(1-3)+1/(1-3+5)+...+1/(1-3+5-...+2n-1)的值 输入一个整数n

输出1+1/(1-3)+1/(1-3+5)+...+1/(1-3+5-...+2n-1)的值,保留2位小数 #include int main() {

int a, x,i,flog,b; float s;

while (scanf(\输入x值 {

b=1; a=1; s=0; i=1; flog=1; while (i<=x) {

s=s+1.0/(2-b);

a=a+2;

b=b+a*flog; flog=-flog; i++; }

printf(\ }

return 0; }

找出数组中出现次数最多的元素,数组的查找一般采用遍历,也就是说:

比如有一个有n个下标变量的数组int a[30],如n=30,则用for循环从a[0]到a[29]都去查找一遍

多组测试,每组先输入一个不大于10的整数n 然后是n个整数

输出这n个整数中最大的元素及下标值

#include #define N 10 int main () {

int n,i,a[N],max,m;

while (scanf(\ {

for (i=0;i

scanf(\ max= a[0]; for (i=0;i

if (max

printf(\ }

return 0; }

在给定的数组中查找一个数

多组测试,每组第一行输入1个整数n(n<20),然后是n个整数 第二行输入1个整数m

查找在第一行的n个整数中第一次出现数字m的下标位置并输出,如果没有找到则输出No #include #define N 20 int main () {

int n,i,a[N],max,m,k,flog; while (scanf(\ {

for (i=0;i

for (i=0;i

if (a[i]==m) { k=i;

printf(\ flog=1; break; }

if (flog==0) printf(\

}

return 0; }

多组测试数据。第一行输入一个整数T表示测试数据组数 每组首先输入1个整数n,然后输入n个整数(不大于20) 对于每组测试数据按照输入相反的顺序输出n个数据

#include #define N 20 int main () {

int n,i,a[N],m,k,flog,t,j; scanf(\for (j=1;j<=t;j++) {

scanf(\ for (i=0;i=0;k--) printf(\ printf(\ } return 0; }

在给定的数组中删除一个数 #include int main () {

int n,i,a[20],m,j,t;

while (scanf(\ {

for (i=0;i

if (a[i]==m) {

for (j=i;j

break; }

int t=n-1; if(i!=n) t--;

for (i=0;i

排序 小于20个数 #include #define N 20 int main () {

int i,n,k,m,a[N],flog,t;

while (scanf(\ {

for (i=0;i

flog=i;

for (k=i+1;kfor (i=0;i

printf(\ printf(\

return 0; }

在给定的数组中删除两个数 #include int main() {

int n,i,m; int a[20];

while(scanf(\ {

for(i=0;i

if(m!=a[i])

printf(\ }

printf(\ }

return 0; }

N个数从小到大排序

输入一个正整数N和N个整数,将它们按从小到大的顺序进行排序后输出。

多组测试数据,每组输入一个正整数N(1≤N≤100)和N个整数,用空格分隔。 将这N个数按从小到大的顺序重新输出 #include #define N 100 int main () {

int i,n,k,a[N],index,temp; while (scanf(\ {

for (i=0;i

index=i;

for (k=i+1;k temp=a[index]; a[index]=a[i]; a[i]=temp; }

for (i=0;i

printf(\ printf(\ }

return 0; }

请将电文中大写字母按

A→Z,B→Y,C→X, D→W,??,X→C,Y→B,Z→A,的规律译成密文, 其他字符保持不变 #include int main( ) {

char str[80]; int i;

while( gets(str)!=NULL) { i = 0;

while (str[i] != '\\0') {

if (str[i] >='A' && str[i] <='Z') str[i] = ('A'+'Z')-str[i]; i++; }

puts(str); }

return 0; }

插入一个数到数列中

已有一个排序好的数列:0 10 20 30 40 50 60 70 80,输入一个任意整数m,按序插入到正确位置,输出插入m后的数列。

多组测试数据,每组输入一个整数m 输出插入m后的数列

#include int main( ) {

int i, x, index; int a[10];

while(scanf(\ {

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

a[i]=i*10; index = 9;

for (i = 0; i < 9; i++) {

if (a[i] > x) {

index = i; break; } }

for (i = 9; i > index; i--) a[i] = a[i - 1]; a[index] = x;

for (i = 0; i < 10; i++) printf(\ printf(\ }

return 0; }

颠倒字符串

#include int main( ) {

char str[80]; int i,len;

while( gets(str)!=NULL) { i = 0;

while (str[i] != '\\0')

i++; len=i;

for(i=len-1;i>=0;i--) printf(\ printf(\

}

return 0; }

输入一个m×n的矩阵,计算每行的和。将行号最高的行与矩阵的第一行进行位置交换,输

出调整后的矩阵以及每行的和。

先输入矩阵的行数、列数m和n(M,N均不超过10),另起一行后再输入一个m×n的整数矩阵,每列数据用空格隔开;每行数据用回车隔开。 整理后的数据以及每行的和。 #include int main() {

int a[10][10],s[10]; int temp,i,j,m,n;

while (scanf(\ {

for (i=0;i

scanf(\ for (j=0;j

temp=a[0][j]; a[0][j]=a[m-1][j]; a[m-1][j]=temp; }

for (i=0;i

s[i]=0;

for (j=0;j

for (i=0;i

for (j=0;j

return 0; }

输入一个n×n的整数矩阵,分别计算两个对角线的和。 输入矩阵的阶数n(n≤10),另起一行后输入一个n×n的整数矩阵,每列数据用空格隔开,每行数据用回车分隔。

输出主对角线和副对角线的和。 #include

int main() {

int a[10][10]; int i,j,n,flog,s,b;

while (scanf(\ {

flog=0;

for (i=0;i

scanf(\ for (i=0;i

if (i==j) s=s+a[i][i]; if (j==n-1-i)

b=b+a[i][n-1-i]; }

printf(\

}

return 0; }

输入一个正整数n(1<= n <= 6)和n阶方阵a中的每一个元素,如果a是上三角矩阵,输出“YES\否则输出”NO\上三角矩阵即主对角线以下的元素都为0的矩阵,主对角为从矩阵的左上角至右下角的连线)。

多组测试数据,每组输入一个正整数n,和n行n列的整数,每一行回车结束

#include int main() {

int a[10][10]; int i,j,n,flog;

while (scanf(\ {

flog=0;

for (i=0;i

scanf(\ for (i=0;i

if (a[i][j]!=0) flog=1; break; }

if (flog==0)

printf(\ else

printf(\

}

return 0; }

判断回文字符串 输入一字符串(少于80个字符),所谓“回文:是指顺读和倒读都一样的字符串,如“XYZYX”。若是回文,以输出“Yes”,否则“No”。

#include int main( ) {

char str[80]; int i,len,flog;

while( gets(str)!=NULL) { i = 0; flog=1;

while (str[i] != '\\0') i++; len=i;

for (i=0;i

if (flog==1) printf(\ else

printf(\

}

return 0; }

判断素数的函数

编写一个判断素数的函数,主函数中利用这个函数,打印出n与m之间的所有素数。

多组测试数据,每组输入2个整数n和m,其中1 < n <= m <= 1000 在一行输出n和m之间(包含n和m)的所有素数,中间用空格搁开 #include int prime(int x) {

int flog,i; flog=1;

for (i=2;i

{ //别忘了括号的位置 flog=0; break; }

return flog; }

int main () {

int n,m,i;

while(scanf(\ {

for (i=n;i<=m;i++) {

if(prime(i)==1) printf(\ }

printf(\ }

return 0; }

调用函数,输出m-n之间所有的Fibonacci

定义递归函数fib(n),它的功能是返回第n项Fibonacci数,如fib(7)的返回值是13。在主函数中,输入两个正整数m和n,调用该函数输出m-n之间所有的Fibonacci数。Fibonacci序列为:1 1 2 3 5 8 13 21.....

多组测试数据,每组输入两个正整数m和n。输出m-n之间所有的Fibonacci数,每个数占5位。

#include int factorsum(int n) {

int r;

if (n==1||n==2) r=1; else

r=factorsum(n-1)+factorsum(n-2); return r; }

int main() {

int m,n,i;

while(scanf(\ { for (i =m; i<=n; i++) printf(\ printf(\}

return 0; }

多组测试数据。每组测试数据输入2个整数。 对于每组测试数据,从大到小输出数 #include

int swap(int *p1,int *p2) {

int temp; temp=*p1; *p1=*p2; *p2=temp; } int main() {

int a,b; int *pa,*pb;

int swap(int *pa,int *pb);

while(scanf(\ {

if (a

pa=&a; pb=&b;

swap(pa,pb); }

printf(\ }

return 0; }

3582

多组测试数据,每组输入两个任意整数。

输出两个数的和与差,空格隔开。

#include

void sumDiff(int x, int y,int *sum, int *diff) {

*sum=x+y; *diff=x-y; }

int main() { int a, b, s, d; while(scanf(\ { sumDiff(a, b, &s, &d); printf(\ }

return 0; }

自定义函数input(int a[], int n),output(int a[], int n),在main函数中调用它们,完成对数组n个元素的输入输出。

多组测试数据,每组先输入整数n,再接着输出n个整数,n<100。 输出数组的每个元素,数据间空格隔开。 #include

int intput(int a[],int n) {

int i;

for (i=0;i

int output(int a[],int n) { int i;

for (i=0;i

int main() {

int array[100], n; while (scanf(\ { intput(array, n); output(array, n); }

return 0; }

利用指针实现三个数从大到小输出。

交换2个数的函数可以利用你在2453上写好的哦。省事多了吧。多组测试数据,每组一行输入三个数

每组在一行从大到小输出 #include

int swap(int *p1,int *p2) {

int temp; temp=*p1; *p1=*p2; *p2=temp; } int main() {

int a, b,c;

while (scanf(\输入a、b值 {

if (a < b) swap(&a, &b); if (a < c) swap(&a, &c); if (b < c) swap(&b, &c);

printf(\ } return 0; }

输入3个字符串(长度都小于80),按由小到大顺序输出。 多组测试数据,每组输入三个字符串。 按从小到大输出三个字符串。 #include

void swap(char *str1, char *str2) {

char t[80];

strcpy(t,str1); strcpy(str1,str2); strcpy(str2,t); }

int main() {

char s1[80], s2[80], s3[80], t[80]; while (gets(s1) != NULL) {

gets(s2); gets(s3);

if (strcmp(s1,s2)>0) swap(s1, s2); if (strcmp(s1,s3)>0) swap(s1, s3); if (strcmp(s2,s3)>0) swap(s2, s3); puts(s1); puts(s2); puts(s3); }

return 0; }

输入10个数,根据提示进行从小到大输出或从大到小输出

从键盘输入一个字符和10个整数,若输入字符是'A',将这10个数按从小到大的顺序输出;若输入字符是'D',则按从大到小输出;若输入其他字符,就结束。 多组测试数据,每组输入10个整数和一个字符 #include

void swap(int *px, int *py) {

int t; t = *px; *px = *py; *py = t; }

void sortA (int num[], int n) {

int i, j;

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

for (j = 0; j < n - 1- i; j++) if (num[j] > num[j+1])

swap(&num[j], &num[j+1]);

将输入一行字符串(小于80个字符),将其中的所有小写字母改为大写,其他字符不变。

#include

int main() {

int i=0; char a[81]; gets(a);

while(a[i]!='\\0') {

if(a[i]>='a' && a[i]<='z') a[i]-=32; ++i; }

printf(\return 0; }

A变为F #include #include int main() { int i; char s[80];

while(gets(s)!=NULL) { for(i=0;s[i]!='\\0';i++) { if(s[i]>='A'&&s[i]<='Z'||s[i]>='a'&&s[i]<='z') { s[i]=s[i]+5; if(s[i]>'Z'&&s[i]<'a'||s[i]>'z') s[i]=s[i]-26; } } puts(s); } return 0; }

过桥

#include int main() { int i,j,temp,TIME,n,a[1000]; while(scanf(\ { TIME=0; for(i=0;ia[j]) { temp=a[i];a[i]=a[j];a[j]=temp; } } } if(n%2==0) { for(i=n-1;i>1;i=i-2) TIME+=a[i]; TIME=TIME+(n/2-1)*(a[0]+a[1])+(n/2)*a[1]; } else{ for(i=n-1;i>2;i-=2) TIME+=a[i]; TIME=TIME+(n/2)*(a[0]+a[1])+((n/2)-1)*a[1]+a[2];

} printf(\ } } return 0; }

统计单词数

#include int main() {

char a[80]; int i,num,t;

while(gets(a)!=NULL) {

num=0; t=0;

for(i=0;a[i]!='\\0';i++) {

if(a[i]==' ') t=0;

else if(t==0) {

t=1;

num++; } }

printf(\ }

return 0; }

裁判 去最低分和最高分 再求平均 #include int main() {

int max,min,n,i,s,sum; double ave; while(scanf(\ { max=-1;min=101;sum=0; for(i=0;i

printf(\ } return 0; }

sum=sum+s;

if(maxs) min=s; } ave=(sum-max-min)*1.0/(n-2);

编写一个判断素数的函数,主函数中调用这个函数,输出100与200之间的所有素

数,每行输出5个数

#include int prime(int x) { int i;

if(x==0||x==1) return 0;

for(i=2;i*i<=x;i++) { if(x%i==0) return 0; }

return 1;} int main() { int i,n; n=0; for(i=100;i<=200;i++) { if(prime(i)==1) { printf(\ n++; if(n%5==0) printf(\ } } return 0; }

多组测试数据,每组输入两个正整数m和n

输出m-n之间的所有完数,\形式输出,但最后一个数后面没有空格

#include int f(int n) { int i,s=0; for(i=1;i

return s; }

int main() { int m,n,i,first; while(scanf(\ { first=1; for(i=m;i<=n;i++) { if(f(i)==i) { if(first==1) { first=0; printf(\ } else printf(\ } } printf(\ } return 0; }

自定义函数reverse(number),它的功能是返回number的逆序数,如reverse(123)的返回值是321。 主函数中,输入一个任意整数,调用reverse函数,将该整数逆序输出

#include int main(void)

本文来源:https://www.bwwdw.com/article/ux85.html

Top