【实验题目1】 从键盘输入任意一个正整数。首先分离出该正整数中的每一位数字,并按逆序显示输出各位数字;然后用分离出的每位数字组成一个最大数和一个最小数,并显示输出。
#include<stdio.h>
void main()
{
int a[10];
int x,i,num=0,j,k,n;
printf("请输入一个整数:\n");
scanf("%d", &x);
for(i=0;i<10;i++)
{
num++;
a[i] = x % 10;
x = x / 10;
if (x == 0)
break;
}
for(i=0;i<num;i++)
printf("%d", a[i]);
for (i = 0; i < num - 1; i++)
{
k = i;
for (j = i + 1; j < num; j++)
{
if (a[k] < a[j])
{
k = j;
n = a[i];;
a[i] = a[k];
a[k] = n;
}
}
}
printf("\n最大数为;\n");
for (i = 0; i < num; i++)
printf("%d", a[i]);
printf("\n最小数为;\n");
for (i = num - 1; i >= 0; i--)
printf("%d", a[i]);
}
【实验题目2】任何一个自然数m的立方均可写成m个连续奇数之和。
例如:
111 = 1
222= 3+5
333= 7+9+11
444 = 13+15+17+19 555=21+23+25+27+29
编程实现:输入一自然数n,求组成n^3的n个连续奇数。
#include<stdio.h>
void main()
{
int n,i;
printf("请输入一个自然数:\n");
scanf("%d",&n);
printf("%d*%d*%d=", n, n, n);
for (i = 0; i < n; i++)
{
printf("%d", n*(n - 1)+1+i*2);
if (i < n - 1)
printf("+");
}
}
【实验题目3】编写程序:输入两个包含10个元素的数组,先将第一个数组采用冒泡法进行降序排列,第二个数组采用选择法排序进行降序排列,然后将这两个数组合并成一个降序数组。
#include<stdio.h>
void main()
{
int a[10], b[10], c[20];
int i,j,k,n;
printf("请输入第一组数:\n");
for (i = 0; i < 10; i++)
{
scanf("%d", &a[i]);
}
printf("排序后;\n");
for(i=9;i>0;i--)
for (j = 0; j < i; j++)
{
if (a[j] < a[j+1])
{
n = a[j];
a[j] = a[j+1];
a[j+1] = n;
}
}
for (i = 0; i < 10; i++)
{
printf("%d ", a[i]);
}
printf("\n请输入第二组数:\n");
for (i = 0; i < 10; i++)
{
scanf("%d", &b[i]);
}
printf("排序后;\n");
for (i = 0; i < 9; i++)
{
k = i;
for (j = i+1; j < 10; j++)
{
if (a[k] < a[j])
{
n = a[j];
a[j] = a[k];
a[k] = n;
}
}
}
for (i = 0; i < 10; i++)
{
printf("%d ", b[i]);
}
for (i = 0; i < 20; i++)
{
if ( i< 10)
c[i] = a[i];
if (i >= 10)
c[i] = b[i - 10];
}
printf("\n合并并且排序后;\n");
for (i = 0; i < 19; i++)
{
k = i;
for (j = i + 1; j < 20; j++)
{
if (c[k] < c[j])
{
n = c[j];
c[j] = c[k];
c[k] = n;
}
}
}
for (i = 0; i < 20; i++)
{
printf("%d ", c[i]);
}
}
【实验题目4】输入一个M行N列的二维数组,找出在该行上最大但在该列上最小的元素输出元素值及位置信息,若没有,则显示信息“没找到”。
#include<stdio.h>
void main()
{
int a[3][3];
int i, j, k,num=0;
int flag, flag1;;
printf("请输入一个三行三列的二维数组:\n");
for (i = 0; i < 3; i++)
{
for (j = 0; j < 3; j++)
{
scanf("%d", &a[i][j]);
}
}
printf("二维数组为;\n");
for (i = 0; i < 3; i++)
{
for (j = 0; j < 3; j++)
{
printf("%d ", a[i][j]);
}
printf("\n");
}
for (i = 0; i < 3; i++)
{
for (j = 0; j < 3; j++)
{
flag = 0;
flag1 = 0;
for (k = 0; k < 3; k++)
{
if (a[i][j] < a[i][k])//当前行是否最大
flag = 1;
}
for (k = 0; k < 3; k++)
{
if (a[i][j] > a[k][j])//当前列是否最小
flag1 = 1;
}
if (!flag && !flag1)//当前行当前列是否都是最大
{
printf("行:%d 列:%d = %d\n", i + 1, j + 1, a[i][j]);
num = 1;
}
}
}
if (num == 0)
printf("不存在鞍点\n");
}
【实验题目5】编写程序:输入字符串s1和s2以及插入位置f,在字符串s1中的指定位置f处插入字符串s2。如:输入"BEIJING"、"123"和位置3,则输出:“BEI123JING”。
#include<stdio.h>
#include<string.h>
void main()
{
char str1[10];
char str2[10];
char str3[20];
int i,j,n,str1len,str2len;
printf("请输入第一个字符串:\n");
scanf("%s", str1);
printf("请输入第二个字符以及插入的位置:\n");
scanf("%s%d", str2, &n);
str1len = strlen(str1);
str2len = strlen(str2);
for (i = 0; i < n; i++)
{
str3[i] = str1[i];
}
for (i = n; i < n + str2len; i++)
{
str3[i] = str2[i - n];
}
for (i = n + str2len; i < str1len + str2len; i++)
{
str3[i] = str1[n++];
}
str3[str1len + str2len] = '\0';
printf("%s\n", str3);
}
【实验题目6】编写程序:输入若干个字符串,求出每个字符串的长度,并打印最长一个字符串的内容。
#include<stdio.h>
#include<string.h>
void main()
{
int i, j, a[5], k;
char str[5][10];
printf("请输入字符串;\n");
for (i = 0; i < 5; i++)
{
scanf("%s", str[i]);
}
for (i = 0; i < 5; i++)
{
printf("第%d个字符串的长度为:",i+1);
a[i] = strlen(str[i]);
printf("%d\n", a[i]);
}
for (i = 0; i < 4; i++)
{
k = i;
for (j = i + 1; j < 5; j++)
{
if (a[k] < a[j])
k = j;
}
}
printf("最长字符串为:%s\n", str[k]);
}
有什么不对的地方,谢谢大家留言。