700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > 实验六 数组程序设计 → 张玉生《C语言程序设计实训教程》双色版 配套实验书答案

实验六 数组程序设计 → 张玉生《C语言程序设计实训教程》双色版 配套实验书答案

时间:2019-02-14 22:01:58

相关推荐

实验六 数组程序设计 → 张玉生《C语言程序设计实训教程》双色版 配套实验书答案

实验8.1

//取出正整数中的偶数字,并用这些数字构成一个最大数#include <stdio.h>#define N 10int main(){int i, j, k = 0, t, d, a[N];long n, m = 0;printf("Pleaseenter a long integer.\n");scanf("%d", &n);while (n > 0) //依次取出每位数,并将偶数存入数组{t = n % 10;if (t % 2 == 0)a[k++] = t;n /= 10;}for (i = 0; i < k - 1; i++){d = i;for (j = i + 1; j < k; j++)if (a[j] > a[d])d = j;if (d != i){t = a[d];a[d] = a[i];a[i] = t;}}for (i = 0; i < k; i++)m = m * 10 + a[i];printf("max=%ld\n", m);system("pause");return 0;}

实验8.2

//验证在7~2000,差恰好是1898的素数#include <stdio.h>int main(){int i, j, a[1000], k = 0, m, n, flag = 0;for (i = 7; i < 2000; i += 2){for (j = 2; j <= i / 2; j++)if (i % j == 0)break;if (j > i / 2)a[k++] = i;}for (i = 0; i < k - 1; i++){for (j = 1; j < k; j++)if (a[j] - a[i] == 1898){m = i;n = j;flag = 1;break;}}if (flag)printf("%d-%d=%d\n", a[n], a[m], a[n] - a[m]);elseprintf("not found!");system("pause");return 0;}

实验8.3

//在给定的数据中查找一个数据是否存在#include <stdio.h>#define N 10int main(){int a[N], i, x;printf("输入%d个整数: \n", N);for (i = 0; i <= (N - 1); i++)scanf("%d", &a[i]);printf("输入要找的数x: \n");scanf("%d", &x);for (i = 0; i <= (N - 1) && a[i] != x; i++);if (i >= N)printf("未找到\n");elseprintf("找到了,是第%d个数\n", i + 1);system("pause");return 0;}

实验8.4

//将一个整数插入到已经排好序的数组中,使该数组仍有序#include <stdio.h>int main(){int i, j, t, n, a[11] = {12, 31, 5, 7, 19, 4, 8, 16, 32, 42};for (i = 0; i < 10; i++) //对数组进行降序排序for (j = i + 1; j <= 10; j++)if (a[i] < a[j]){t = a[i];a[i] = a[j];a[j] = t;}printf("Inserted before: ");for (i = 0; i < 10; i++)printf("%3d", a[i]);printf("\nPlease enter a number:");scanf("%d", &n); //输入要插入的数for (i = 0; i < 10; i++)if (a[i] < n){for (j = 9; j >= i; j--)a[j] = a[j - 1]; //元素依次后移一个位置break; //找到插入点,结束寻找}a[i] = n;printf("Inserted after:");for (i = 0; i < 10; i++)printf("%3d", a[i]);printf("\n");system("pause");return 0;}

实验8.5

//输出15~100之间所有能被3整除且至少有一位数字是5的整数#include <stdio.h>int main(){int i, j, n=0, m, k, a[100], b[5];for (i = 15; i <= 100; i++){if (i % 3 == 0){m = i;j = 0;k = 0;do{b[j] = m % 10;m /= 10;if (b[j] == 5)k++;j++;} while (m > 0);if (k > 0)a[n++] = i;}}for (i = 0; i < n; i++)printf("%4d\n", a[i]);system("pause");return 0;}

实验8.6

//将一组数组中的元素逆序存放#include <stdio.h>int main(){int array1[11];printf("Input 10 numbers: \n");for (int a = 0; a <= 9; a++) //输入10个元素scanf("%d", &array1[a]);printf("Thire reverse numbers are: \n");for (int b = 9; b >= 0; b--) //倒序输出10个元素printf("%d ", array1[b]);printf("\n");system("pause");return 0;}

实验8.7

//取出一个十进制正整数中的所有奇数数字,用这些数字构成一个最小数#include <stdio.h>int main(){long s, s1 = 0;int j = 0, i = 0;int b[10];scanf("%ld", &s);while (s > 0)//存放奇数到数组b[]{if (((s % 10) % 2) != 0){b[j] = (s % 10);j++;}s = s / 10;}int x, y, z;for (x = 0; x < j - 1; x++)//使用冒泡排序升序排序b[]for (y = 0; y < j - 1 - x; y++)if (b[y] > b[y + 1]){z = b[y]; b[y] = b[y + 1]; b[y + 1] = z;}for (i = 0; i < j; i++)s1 = s1 * 10 + b[i];//最小奇数赋值s1printf("Min: %ld\n", s1);system("pause");return 0;}

实验9.1

//输入一个字符串检测是否是回文串#include <stdio.h>int main(){char s[10];//定义一个字符串数组int i, j, n;printf("Please enter a string: ");gets(s);//输入字符串for (n = 0; s[n] != '\0'; n++);//求出字符串的长度for (i = 0, j = n - 1; i < j; i++, j--)if (s[i] != s[j])//判断对应字符是否相等break;//对应的字符不相等时退出循环if (i < j)//若从循环体中跳出来的则不是回文printf("No\n");elseprintf("Yes\n");system("pause");return 0;}

实验9.2

//将二维数组中的行列元素互换#include <stdio.h>#define N3int main(){int i, j, t, a[N][N] = { 3,2,6,-2,7,9,1,5,8 };printf("Exchange before: \n");for (i = 0; i < 3; i++){for (j = 0; j < 3; j++)printf("%3d", a[i][j]);printf("\n");//输出一行后换行}printf("\n");for (i = 0; i < N; i++)//进行行列互换for (j = i + 1; j < N; j++){t = a[i][j];a[i][j] = a[j][i];a[j][i] = t;}printf("Exchange after: \n");for (i = 0; i < 3; i++){for (j = 0; j < 3; j++)printf("%3d", a[i][j]);printf("\n");}system("pause");return 0;}

实验9.3

//在一个递增的 字母或数字串(不超过8个)中插入一个字母或数字#include <stdio.h>int main(){char string[10] = { '\0' }, ch;int i = 0, j, len;printf("Please enter a string(lower): ");gets(string);//输入一段字符串printf("Please enter a letter: ");ch = getchar();while (string[i] != '\0' && ch > string[i])//找到插入字符的合适位置i++;for (len = 0; string[len] != '\0'; len++);//计算字符串string长度if (i <= len - 1)//将从找到从插入位置i以后的字符依次后移一个位置for (j = len - 1; j >= i; j--)string[j + 1] = string[j];string[i] = ch;//将ch存放到位置iprintf("Inserted after: ");puts(string);system("pause");return 0;}

实验9.4

//分别求二维数组a[3][4]的各行\各列\元素之和#include <stdio.h>int main(){int i, j, a[4][5];printf("Please enter array: \n");for (i = 0; i < 3; i++)for (j = 0; j < 4; j++)scanf("%d", &a[i][j]);//输入每个元素printf("\nArray:\n");for (i = 0; i < 3; i++){for (j = 0; j < 4; j++)printf("%3d", a[i][j]);printf("\n");//换行}for (i = 0; i < 3; i++)a[i][4] = 0;//存放行之和的元素清0for (j = 0; j < 5; j++)a[3][j] = 0;//存放列之和的元素清0for (i = 0; i < 3; i++)for (j = 0; j < 4; j++){a[i][4] += a[i][j];//计算各行之和a[3][j] += a[i][j];//计算各列之和a[3][4] += a[i][j];//计算全部元素之和}printf("The sum of columnrow:\n");for (i = 0; i < 4; i++){for (j = 0; j < 5; j++)printf("%3d", a[i][j]);printf("\n");}system("pause");return 0;}

实验9.5

//输入一个正整数n(1<n<=6)和n阶方阵,如果找到方阵中的鞍点(鞍点元素:行最大,列最小)并输出其坐标;否则输出NO#include <stdio.h>#defineN 4int main(){int i, j, flag = 0, max, min, a[N][N];printf("Enter %d integers: \n", N * N);for (i = 0; i < N; i++)for (j = 0; j < N; j++)scanf("%d", &a[i][j]);//输入一个N阶矩阵到a[][]中for (i = 0; i < N; i++){for (j = 0; j < N; j++)printf("%3d", a[i][j]);printf("\n");}for (i = 0; i < N; i++){max = 0;//找第i行中最大值所在下标maxfor (j = 0; j < N; j++)if (a[i][j] > a[i][max])max = j;min = 0;//找第max行中最大值所在下标minfor (j = 0; j < N; j++)if (a[j][max] < a[min][max])min = j;if (min == i){flag = 1; break;//flag=1,找到鞍点;flag=0,未找到鞍点}}if (flag == 1)//输出结果printf("鞍点是: a[%d][%d]=%d\n", min, max, a[min][max]);elseprintf("NO\n");system("pause");return 0;}

实验9.6

//输入一个以回车符结束的字符串(<80字符)并将字符串逆序输出#include <stdio.h>int main(){char ch[80];int i;for (i = 0; i < 80; i++)if ((ch[i] = getchar()) == '\n')break;for (; i >= 0; i--)putchar(ch[i]);printf("\n");system("pause");return 0;}

实验9.7

//输入一个以回车符结束的字符串(<80字符),统计某字符的次数,最后输出字符串#include <stdio.h>int main(){char ch[80];int i, y = 0;char k;for (i = 0; i < 80; i++)//获取字符串if ((ch[i] = getchar()) == '\n')break;printf("请输入需要统计次数的字符: ");scanf("%c", &k);for (int x = 0; x < i; x++){if (k == ch[x])y++;//计算字符的出现次数}printf("字符%c出现的次数为: %d\n",k, y);for (int n = 0; n <= i; n++)//输出字符串putchar(ch[n]);system("pause");return 0;}

实验9.8

//除去方阵副对角线、最后一行及列后的元素, 求元素之和#include <stdio.h>int main(){int i, j, a[4][5];int n, m, sum = 0;printf("请输入方阵的阶数: ");scanf("%d", &n);//输入每个元素printf("\n请输入方阵的元素:\n");for (i = 0; i < n; i++)for (j = 0; j < n; j++)scanf("%d", &a[i][j]);printf("\n你输入的方阵是:\n");for (i = 0; i < n; i++){for (j = 0; j < n; j++)printf("%3d", a[i][j]);printf("\n");//换行}//将副对角线元素置0for (int x = 0, y = n - 1; x < n; x++, y--)a[x][y] = 0;//将最后一行元素置0for (int y = 0; y < n; y++)a[n - 1][y] = 0;//将最后一列元素置0for (int x = 0; x < n; x++)a[x][n - 1] = 0;//计算全部元素之和for (i = 0; i < n; i++)for (j = 0; j < n; j++)sum += a[i][j];printf("除去副对角线、最后一行及列后, 元素之和: %d\n", sum);system("pause");return 0;}

实验六 数组程序设计 → 张玉生《C语言程序设计实训教程》双色版 配套实验书答案 (纯手打 仅供参考)

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。