1-1 sdut-C语言实验- A+B for Input-Output Practice (不确定次数循环)
任务描述:
Your task is to Calculate a + b.
输入格式:
The input will consist of a series of pairs of integers a and b, separated by a space, one pair of integers per line.
输出格式:
For each pair of input integers a and b you should output the sum of a and b, and followed by a blank line.。
输入样例:
1 5 10 20
输出样例:
6 30
相关限制:
代码长度限制16KB 时间限制400ms 内存限制64MB 栈限制8192KB
答案:
#include <stdio.h> int main() { int a,b; while(~scanf("%d%d",&a,&b)) { printf("%d\n\n",a+b); } return 0; }
1-2 sdut-C语言实验-N^3问题
任务描述:
输入一个正整数N,求出N^3的各位数字的立方和。
输入格式:
输入N的值。N<=1024
输出格式:
问题描述中所要求的数值。
输入样例:
3
输出样例:
351
相关限制:
代码长度限制16KB 时间限制400ms 内存限制64MB 栈限制8192KB
答案:
#include <stdio.h> int main() { int a,b,c,e; scanf("%d",&a); b=a*a*a; e=0; while(b>0) { c=b%10; b/=10; e+=c*c*c; } printf("%d",e); return 0; }
1-3 sdut-C语言实验-求阶乘(循环结构)
任务描述:
从键盘输入任意一个大于等于0的整数n,然后计算n的阶乘,并把它输出。提示: 0!是 1 。
输入格式:
输入任意一个大于等于0的整数n。
输出格式:
输出n!
输入样例:
3
输出样例:
6
相关限制:
代码长度限制16KB 时间限制400ms 内存限制64MB 栈限制8192KB
答案:
#include <stdio.h> int main() { int a,b,c=1; scanf("%d",&a); for(b=1;b<=a;b++) { c*=b; } printf("%d",c); return 0; }
1-4 sdut-C语言实验-完美的素数
任务描述:
素数又称质数。指一个大于1的自然数,除了1和此整数自身外,不能被其他自然数整除的数。我们定义:如果一个素数是完美的素数,当且仅当它的每一位数字之和也是一个素数。现在给你一个正整数,你需要写个程序判断一下这个数按照上面的定义是不是一个完美的素数。
输入格式:
输入包含多组测试数据。每组测试数据只包含一个正整数 n (1 < n <= 10^6)。
输出格式:
对于每组测试数据,如果 n 是完美的素数,输出“YES”,否则输出“NO”(输出均不含引号)。
输入样例:
在这里给出一组输入。例如:
11 13
输出样例:
在这里给出相应的输出。例如:
YES NO
相关限制:
代码长度限制16KB 时间限制400ms 内存限制64MB 栈限制8192KB
答案:
#include <stdio.h> int main() { int n,b,c1,c2,c3,c4,c5,d,e,i; while(~scanf("%d",&n)) { b=0; e=0; if(n==1) { b=1; } for(i=2; i<n; i++) { if(n%i==0) { b=1; break; } } if(b==0) { c1=n%10; c2=n/10%10; c3=n/100%10; c4=n/1000%10; c5=n/10000%10; d=c1+c2+c3+c4+c5; for(i=2; i<d; i++) { if(d%i==0) { e=1; break; } } } if(b==0&&e==0) { printf("YES\n"); } else { printf("NO\n"); } } return 0; }
1-5 sdut-C语言实验-排序问题
任务描述:
输入10个整数,将它们从小到大排序后输出,并给出现在每个元素在原来序列中的位置。
输入格式:
输入数据有一行,包含10个整数,用空格分开。
输出格式:
输出数据有两行,第一行为排序后的序列,第二行为排序后各个元素在原来序列中的位置。
输入样例:
在这里给出一组输入。例如:
1 2 3 5 4 6 8 9 10 7
输出样例:
在这里给出相应的输出。例如:
1 2 3 4 5 6 7 8 9 10 1 2 3 5 4 6 10 7 8 9
相关限制:
代码长度限制16KB 时间限制400ms 内存限制64MB 栈限制8192KB
答案:
#include <stdio.h> int main() { int a[10]; int num[10]; int i,j,t; for(i=0;i<10;i++) { scanf("%d",&a[i]); num[i]=i+1; } for(i=0;i<9;i++) { for(j=i+1;j<10;j++) { if(a[i]>a[j]) { t=a[i]; a[i]=a[j]; a[j]=t; t=num[i]; num[i]=num[j]; num[j]=t; } } } for(i=0;i<10;i++) { if(i==9) printf("%d\n",a[i]); else printf("%d ",a[i]); } for(i=0;i<10;i++) { if(i==9) printf("%d\n",num[i]); else printf("%d ",num[i]); } return 0; }
1-6 sdut-C语言实验- 冒泡排序中数据交换的次数
任务描述:
听说过冒泡排序么?一种很暴力的排序方法。今天我们不希望你用它来排序,而是希望你能算出从小到大冒泡排序的过程中一共进行了多少次数据交换。
输入格式:
输入数据的第一行为一个正整数 T ,表示有 T 组测试数据。
接下来T行,每行第一个整数N, 然后有N个整数,无序。0<N <= 100
输出格式:
输出共 T 行。
每行一个整数,代表本行数据从小到大冒泡排序所进行的交换次数
输入样例:
在这里给出一组输入。例如:
3 5 1 2 3 4 5 4 5 3 7 1 2 2 1
输出样例:
在这里给出相应的输出。例如:
0 4 1
相关限制:
代码长度限制16KB 时间限制400ms 内存限制64MB 栈限制8192KB
答案:
#include <stdio.h> int main() { int t,n,a[100],c,j,b,i; scanf("%d",&t); while(t--) { c=0; scanf("%d",&n); for(i=0; i<n; i++) { scanf("%d",&a[i]); } for(i=0; i<n-1; i++) { for(j=0; j<n-1-i; j++) { if(a[j]>a[j+1]) { b=a[j]; a[j]=a[j+1]; a[j+1]=b; c++; } } } printf("%d\n",c); } return 0; }
1-7 sdut-C语言实验-矩阵输出(数组移位)
任务描述:
输入N个整数,输出由这些整数组成的n行矩阵。
输入格式:
第一行输入一个正整数N(N<=20),表示后面要输入的整数个数。下面依次输入N个整数。
输出格式:
以输入的整数为基础,输出有规律的N行数据。
输入样例:
在这里给出一组输入。例如:
5 3 6 2 5 8
输出样例:
在这里给出相应的输出。例如:
3 6 2 5 8 8 3 6 2 5 5 8 3 6 2 2 5 8 3 6 6 2 5 8 3
相关限制:
代码长度限制16KB 时间限制400ms 内存限制64MB 栈限制8192KB
答案:
#include <stdio.h> int main() { int i, n, a[21], j, k, t; scanf("%d", &n); for(i = 0; i < n; i++) { scanf("%d", &a[i]); } for(k = 0; k <= n - 1; k++) { for(i = 0; i < n; i++) { if(i < n -1) { printf("%d ", a[i]); } else { printf("%d\n", a[i]); } } t = a[n - 1]; for(j = n - 1; j >= 1; j--) { a[j] = a[j - 1]; } a[0] = t; } return 0; }
1-8 sdut-C语言实验-求一个3*3矩阵对角线元素之和
任务描述:
给定一个3*3的矩阵,请你求出对角线元素之和。
输入格式:
按照行优先顺序输入一个3*3矩阵,每个矩阵元素均为整数。
输出格式:
从左下角到右上角这条对角线上的元素之和。
输入样例:
在这里给出一组输入。例如:
1 2 3 3 4 5 6 0 1
输出样例:
在这里给出相应的输出。例如:
13
相关限制:
代码长度限制16KB 时间限制400ms 内存限制64MB 栈限制8192KB
答案:
#include <stdio.h> int main() { int a[3][3],i,j,b=0; for(i=0; i<3; i++) { for(j=0; j<3; j++) { scanf("%d",&a[i][j]); if(i+j==2) { b+=a[i][j]; } } } printf("%d",b); return 0; }