仅供课外学习使用,任何个人与机构不得利用此文章进行任何形式的作弊。
A:A + B
题目:
描述:
帅气的3C哥参加了一场考试,已知考试共五科,现知道他每科的成绩,求3C哥的总成绩。
输入:
输入一行,输入5个整数,表示3C哥每科成绩,范围在[0, 100]内。
输出:
输出一行,输出1个整数,表示3C哥的总成绩
输入样例1:
98 95 87 100 90
输出样例1:
470
实例:
#include<stdio.h>
#include<stdlib.h>
#include<math.h>
#include<string.h>
#include<windows.h>
int main()
{
int a[5];
int i,sum=0;
for(i=0;i<5;i++)
{
scanf("%d",&a[i]);
sum+=a[i];
}
printf("%d",sum);
return 0;
}
B:3n + 1问题
题目:
描述:
对于任意大于1的自然数n,若n为奇数,则将n变为3n+1,否则变为n的一半;经过若干次这样的变换,一定会使n变为1。比如:
3->10->5->16->8->4->2->1
要求:
输入n,输出变换的次数。
输入:
输入一行,输入一个正整数n,1 <= n <= 100。
输出:
输出一行,输出一个正整数,表示变换的次数。
输入样例1:
3
输出样例1:
7
实例:
#include<stdio.h>
#include<stdlib.h>
#include<math.h>
#include<string.h>
#include<windows.h>
int main()
{
int n,cnt=0;
scanf("%d",&n);
for(;n!=1;)
{
if(n%2==1)
{
n = 3*n+1;
cnt++;
}
else
{
n = n/2;
cnt++;
}
}
printf("%d",cnt);
return 0;
}
C:稀疏矩阵
题目:
描述:
大部分元素为0的矩阵称为稀疏矩阵。假设有k个非0元素,则可把稀疏矩阵用k*3的矩阵简记之,其中第一列为行号,第二列为列号,第三列是该行、该列下的非0元素的值。
输入:
首先输入一行,输入两个正整数,表示稀疏矩阵的行号和列号,再输入一个稀疏矩阵,行和列不超过100。
输出:
输出它的简记形式,按从上到下,从左到右的顺序依次输出。每一行输出3个整数,每两个整数之间一个空格,最后一个整数后面没有空格。
输入样例1:
3 4
0 0 0 5
0 2 0 0
0 1 0 0
输出样例1:
1 4 5
2 2 2
3 2 1
实例:
#include<stdio.h>
#include<stdlib.h>
#include<math.h>
#include<string.h>
#include<windows.h>
int main()
{
int m,n;
int i,k;
int cnt[100][100],ret[100][100],t[100][100];
for(i=0;i<100;i++)
for(k=0;k<100;k++)
{
cnt[i][k]=0;
t[i][k]=0;
}
scanf("%d%d",&m,&n);
int a[100][100];
for(i=0;i<m;i++)
for(k=0;k<n;k++)
scanf("%d",&a[i][k]);
for(i=0;i<m;i++)
{
int temp = 0;
for(k=0;k<n;k++)
{
if(a[i][k]==0)
{
cnt[i][temp]++;
}
else
{
cnt[i][temp]++;
printf("%d %d %d\n",i+1,cnt[i][temp],a[i][k]);
temp++;
cnt[i][temp] = cnt[i][temp-1];
}
}
}
return 0;
}
D:开灯问题
题目:
描述:
有n盏灯,编号为1~n。第1个人把所有灯打开,第2个人按下所有编号为2的倍数的开关(这些灯将被关掉),第3个人按下所有编号为3的倍数的开关(其中关掉的灯将被打开,开着的灯将被关闭),以此类推。一共有k个人,问最后有哪些灯开着?
输入:
输入一行,输入两个正整数n和k。(k<=n<=1000)
输出:
输出一行,输出所有开着的灯的编号,每个编号后面跟一个空格。
输入样例1:
7 3
输出样例1:
1 5 6 7
提示:
可先使用string.h里的memset函数将数组全部置0;使用C语言的逻辑非(!)操作符
实例:
#include<stdio.h>
#include<stdlib.h>
#include<math.h>
#include<string.h>
#include<windows.h>
int main()
{
//没有用提示,但不扣分
int n,k;
scanf("%d%d",&n,&k);
int a[1000],b[1000];
int i,m,t=2;
for(i=0;i<n;i++)
{
a[i] = 0;
b[i] = i+1;
}
for(i=0;i<k-1;i++)
{
for(m=0;m<n;m++)
if(b[m]%t==0)
{
if(a[m]==1)
a[m]=0;
else
a[m]=1;
}
t++;
}
for(i=0;i<n;i++)
if(a[i]!=1)
printf("%d ",b[i]);
return 0;
}
E:还是一个不妖艳的问题
题目:
描述:
U君与S君想测试下双方的缘分,测试规则是两人各想一个数字,如果两个数字互质则代表有缘分。
输入:
多组测试,每组测试输入两个数字m和n(m和n均不超过int取值范围),空格隔开。
输出:
对于每组,如果有缘分的话,输出“Yes”;否则,输出“No”
输入样例1:
10 5
17 13
输出样例1:
No
Yes
提示:
可使用 while (scanf("%d%d", &n, &m) != EOF) 完成多组输入
实例:
#include<stdio.h>
#include<stdlib.h>
#include<math.h>
#include<string.h>
#include<windows.h>
int gcd(int m,int n)
{
while(n^=m^=n^=m%=n);
return m;
}
int main()
{
int m,n;
while(scanf("%d%d",&m,&n)!=EOF)
{
if(m<n)
{
int temp = m;
m = n;
n = temp;
}
int t=gcd(m,n);
if(t==1)
printf("Yes\n");
else
printf("No\n");
}
return 0;
}
F:回文串的排序
题目:
描述:
输入n个字符串,将其中是回文串的字符串,按照长度从小到大的顺序输出,如果长度相同,则按照输入的顺序输出即可。
回文的含义是:正着看和倒着看相同,如abba和yyxyy。
输入:
第一行首先是一个整数n(n<50),表示有n个字符串(每个字符串的都长度小于100)。接下来有n行,每行输入一个字符串。
输出:
按照长度从小到大的顺序输出其中的回文串,如果长度相同,则按照输入的顺序输出。
输入样例1:
4
abbb
abccba
abba
acca
输出样例1:
abba
acca
abccba
实例:
#include<stdio.h>
#include<stdlib.h>
#include<math.h>
#include<string.h>
#include<windows.h>
class huiwen
{
public:
char a[100];
}store[50];
int main()
{
int n,i,k,cnt=0;
scanf("%d",&n);
char temp[100];
for(i=0;i<n;i++)
{
int ret = 0;
int k;
scanf("%s",temp);
int left = 0;
int right = strlen(temp)-1;
for(;;left++)
{
if(temp[left]!=temp[right])
break;
else
ret++;
if(ret==(strlen(temp)/2))
{
strcpy(store[cnt].a,temp);
cnt++;
}
if(right%2==0)
if(right-left==1)
break;
if(right%2!=0)
if(right==left)
break;
right--;
}
}
for(i=0;i<cnt;i++)
for(k=0;k<cnt-i-1;k++)
if(strlen(store[k].a)>strlen(store[k+1].a))
{
char s[100];
strcpy(s,store[k].a);
strcpy(store[k].a,store[k+1].a);
strcpy(store[k+1].a,s);
}
for(i=0;i<cnt;i++)
puts(store[i].a);
return 0;
}
G:蛇形填数
题目:
描述:
在n*n方阵里填入1,2,…,n*n,要求填成蛇形。例如n=4时方阵为:
10 11 12 1
9 16 13 2
8 15 14 3
7 6 5 4
输入:
本题为多组输入。每组数据输入一行,输入一个正整数n。n<=8。
输出:
输出n*n的蛇形矩阵,每行中每两个数之间用一个空格隔开,每行最后一个数后面没有空格。
输入样例1:
4
输出样例1:
10 11 12 1
9 16 13 2
8 15 14 3
7 6 5 4
实例:
#include<stdio.h>
#include<stdlib.h>
#include<math.h>
#include<string.h>
#include<windows.h>
int main()
{
int n;
while(scanf("%d",&n)!=EOF)
{
int count=1;
int a[8][8];
int i,j,t=0;
while(count<=n*n)
{
for(i=n-1-t,j=0+t;j<n-1-t;j++)
a[j][i] = count++;
if(count>=n*n) break;
for(i=n-1-t,j=n-1-t;i>0+t;i--)
a[j][i] = count++;
if(count>=n*n) break;
for(i=0+t,j=n-1-t;j>0+t;j--)
a[j][i] = count++;
if(count>=n*n) break;
for(i=0+t,j=0+t;i<n-1-t;i++)
a[j][i] = count++;
if(count>=n*n) break;
t++;
}
a[(n-1)/2][(n-1)/2] = n*n;
int x,y;
for(x = 0; x < n; x++)
{
for(y = 0; y < n; y++)
{
if(y!=n-1)
printf("%d ", a[x][y]);
else
printf("%d", a[x][y]);
}
printf("\n");
}
}
return 0;
}
152

被折叠的 条评论
为什么被折叠?



