![](https://img-blog.csdnimg.cn/20201014180756916.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
C
yuyuzhang1
这个作者很懒,什么都没留下…
展开
-
计算机二级考试C语言
计算机二级考试C语言本篇记录做题遇到的知识点和易错点,离考试还有半个月,冲冲冲!1.goto语句通常与条件语句配合使用。可用来实现条件转移,构成循环,跳出循环体等功能。但是,在结构化程序中一般不主张使用goto语句,以免造成程序流程的混乱,使理解和调试程序都产生困难。2.编译执行和解释执行C语言仅可以编译执行。编译执行是指由编译程序将目标代码一次性编译成目标程序,再由机器运行目标程序。解释执行是将源语言直接作为源程序输入,解释执行解释一句后就提交计算机执行一句,并不形成目标程序。3.C程序开发过原创 2021-09-17 12:05:40 · 2275 阅读 · 1 评论 -
(24)有一个班,3个学生,各学4门课,计算总平均分数以及第n个学生的成绩(指针实现)
有一个班,3个学生,各学4门课,计算总平均分数以及第n个学生的成绩(指针实现)程序分析:1.设计两个函数average和search分别用于计算总平均分书和输出第n个学生的成绩。2.在average函数中定义一个指针* a_end指向最后一个元素的地址,通过指针自增一统计总成绩。3.在search中定义指针p,指针p指向主函数传入的行号数的首元素的地址,通过for循环输出该学生的所有成绩。#define _CRT_SECURE_NO_WARNINGS#include<stdio.h>原创 2021-08-16 16:18:03 · 2954 阅读 · 0 评论 -
(23)用指针方法对10个整数按由大到小顺序排序
用指针方法对10个整数按由大到小顺序排序#define _CRT_SECURE_NO_WARNINGS#include<stdio.h>#include<math.h>#include<stdlib.h>int main(){ void sort(int* x, int n); int a[10]; printf("请输入10个数:"); int* p; for (p = a; p < a + 10; p++) { scanf("%d",原创 2021-08-11 18:19:41 · 866 阅读 · 0 评论 -
(22)用指针的方法将数组中a中的n个整数按相反顺序存放
用指针的方法将数组a中的n个整数按相反顺序存放程序分析:编写函数inv,定义指针*p,*k,分别指向数组前面和后面的元素。通过形参指针变量,改变它们所指向的n个变量的值。#define _CRT_SECURE_NO_WARNINGS#include<stdio.h>#include<math.h>#include<stdlib.h>int main(){ void inv(int* x, int n); int i; int a[10]; int*原创 2021-08-11 17:58:48 · 2916 阅读 · 0 评论 -
(21)给出年、月、日,计算该日是该年的第几天
给出年、月、日,计算该日是该年的第几天程序分析:设计一个函数t用于计算天数,另一个函数z用于判断是否为闰年。在主函数判断输入的月份是否大于2,是则在总天数上加上1,否则不作处理。#define _CRT_SECURE_NO_WARNINGS#include<stdio.h>#include<math.h>#include<stdlib.h>int main(){ int t(int month, int day); bool z(int year);原创 2021-08-10 14:48:31 · 1277 阅读 · 0 评论 -
(20)写一个函数,输入一个十六进制数,输出相应的十进制数
写一个函数,输入一个十六进制数,输出相应的十进制数程序分析:若不对输出字符串中的元素进行处理,则输出的是该元素的ASCI码。在十六进制中分别用A,B,C,D,E,F代表数字10,11,12,13,14,15.经查ASCI字符代码表,发现可用字母的ASCI减去字符’7’的ASCI码就可以得到每个字母代表的数字。#define _CRT_SECURE_NO_WARNINGS#include<stdio.h>#include<math.h>#include<stdlib.h原创 2021-08-08 16:47:52 · 3761 阅读 · 0 评论 -
(19)写一个函数,用”起泡法“对输入的10数字符按由小到大顺序排列
用”起泡法“对输入的10数字符按由小到大顺序排列起泡法:即每一次将相邻两个数进行比较,若符合条件则交换两个数的值。每进行一趟排序,最大的一个数变成最后一个数。以此类推,直至整个数组按照由小到大排列。举例:现有数组(8 4 3 7 5 6 2 1)第一趟:4 3 7 5 6 2 1 8第二趟:3 4 5 6 2 1 7 8第三趟:3 4 5 2 1 6 7 8第四趟:3 4 2 1 5 6 7 8第五趟:3 2 1 4 5 6 7 8第六趟:2 1 3 4 5 6 7 8第七趟:1 2 3原创 2021-08-06 16:20:48 · 6099 阅读 · 1 评论 -
(18)写一个函数,输入一行字符,将此字符串中最长的单词输出。
写一个函数,输入一行字符,将此字符串中最长的单词输出。程序分析:设置变量sum统计每个单词的长度,设置变量max存储单词的最大长度。以空格为判断条件,当循环到空格是,重置sum的值为0,循环计算每个单词的长度,设置变量保存最长单词的最后一个字符的下标。在主函数输入字符串,并输出最长的单词。知识点:在调试程序的时候发现一个问题,如果长度最长的单词是字符串的最后一个单词则会出现错误。经过不断检查发现在循环最后一个单词的时候当i=最后一个元素的下标时,满足退出for循环的条件,这时则不会判别单词的长度是否为最原创 2021-08-06 12:58:07 · 7920 阅读 · 2 评论 -
(17)编写一个函数,由实参传来一个字符串,统计此字符串中字母、数字、空格和其他 字符的个数,在主函数中输入字符串以及输出上述结果。
编写一个函数,由实参传来一个字符串,统计此字符串中字母、数字、空格和其他字符的个数,在主函数中输入字符串以及输出上述结果。#include<stdio.h>#include<math.h>#include<stdlib.h>int sum1 = 0, sum2 = 0, sum3 = 0, sum4 = 0;//用来统计个数int main(){ void z(char a[], int n); char a[10]; int i; printf("原创 2021-08-06 12:57:39 · 10128 阅读 · 3 评论 -
(16)写一个函数,输入一个4位数字,要求输出这4个数字字符,但每两个数字间空一个空格。 如输入1990.应输出“1 9 9 0”
写一个函数,输入一个4位数字,要求输出这4个数字字符,但每两个数字间空一个空格。如输入1990.应输出“1 9 9 0”#include<stdio.h>#include<math.h>#include<stdlib.h>int main(){ void z(char a[4]); char a[4]; int i; printf("请输入一个字符串:"); for (i = 0; i < 4; i++) { scanf_s("%c",原创 2021-08-06 12:57:07 · 1909 阅读 · 0 评论 -
(15)写一个函数,将一个字符串中的元音字母复制到另一字符串,然后输出。
写一个函数,将一个字符串中的元音字母复制到另一字符串,然后输出。程序分析:设置一个长度足够大的b数组存储字符串中的元音字母。当b[i]不为空时输出b[i]的值。#include<stdio.h>#include<math.h>#include<stdlib.h>char b[100];//声明全局变量int main(){ void z(char a[], int n); char a[10]; int i; printf("请输入一个长度为10的字原创 2021-08-06 12:56:30 · 3246 阅读 · 0 评论 -
(14)写一个函数,将两个字符串连接
写一个函数,将两个字符串连接程序分析:用户在控制台输出第一个字符串后按下回车键继续输出下一个字符串。需要加上getchar()读取换行符,若不进行处理程序会将换行符也连接到新的字符串中。#include<stdio.h>#include<math.h>#include<stdlib.h>int main(){ void z(char a[], char b[], int n, int m); char a[6]; char b[3]; int i; p原创 2021-08-06 12:55:54 · 12639 阅读 · 0 评论 -
(12)写一个函数,使给定的一个3*3的二维整型数组转置,即行列互换
写一个函数,使给定的一个3*3的二维整型数组转置,即行列互换#include<stdio.h>#include<math.h>#include<stdlib.h>int main(){ void z(int a[3][3]); int a[3][3]; int i, j; printf("请输入一个3*3的数组:\n"); for (i = 0; i < 3; i++) { for (j = 0; j < 3; j++) {原创 2021-08-06 12:54:05 · 861 阅读 · 0 评论 -
(11)写一个判别素数的函数,在主函数输入一个整数,输出是否为素数的信息。
标题写一个判别素数的函数,在主函数输入一个整数,输出是否为素数的信息。#include<stdio.h>#include<math.h>#include<stdlib.h>int main(){ void s1(int x); int x; printf("请输入一个数:\n"); scanf_s("%d", &x); s1(x); system("pause"); return 0;}void s1(int x){ int i,原创 2021-08-06 12:53:31 · 3209 阅读 · 0 评论 -
(13)写一个函数,使输入的一个字符串按反序存放,在主函数中输入和输出字符串。
写一个函数,使输入的一个字符串按反序存放,在主函数中输入和输出字符串。程序分析:设置字符串数组b存储逆序后得到的字符值(须声明为全局变量)#include<stdio.h>#include<math.h>#include<stdlib.h>#define _CRT_SECURE_NO_DEPRECATEchar b[5];//声明全局变量int main(){ void z(char a[5]); char a[5]; int i; printf(原创 2021-08-06 12:55:28 · 8285 阅读 · 0 评论 -
(10)写两个函数,分别求两个整数的最大公约数和最小公倍数,用主函数调用这两个函数,并输出 结果。两个整数由键盘输入。
写两个函数,分别求两个整数的最大公约数和最小公倍数,用主函数调用这两个函数,并输出结果。两个整数由键盘输入。程序分析:采用辗转相除法求最大公约数,最大公约数乘这两个数的乘积可得最大公约数。设置变量m保存两数的乘积。#include<stdio.h>#include<math.h>#include<stdlib.h>int main(){ int c1(int a, int b); int c2(int a, int b); int a, b; int原创 2021-08-06 12:54:59 · 6907 阅读 · 2 评论 -
(9)用C语言输出平行四边形图案
用C语言输出平行四边形图案程序分析:首先需要输出平行四边形前面的空格,可以将其看为一个等腰直角三角形进行输出(循环结束条件为行号等于列号)#include<stdio.h>#include<math.h>#include<stdlib.h>int main(){ int i, j; for (i = 0; i < 5 ; i++) { for (j = 0; j <= i; j++) { printf(" ");//打印前面的原创 2021-08-05 16:36:33 · 20340 阅读 · 1 评论 -
(8)有15个数按由大到小顺序存放在一个数组中,输入一个数,要求用折半查找法找出该数 是数组中第几个元素的值。如果该数不在数组中,则输出“无此数”。
有15个数按由大到小顺序存放在一个数组中,输入一个数,要求用折半查找法找出该数是数组中第几个元素的值。如果该数不在数组中,则输出“无此数”。折半查找法:#include<stdio.h>#include<math.h>#include<stdlib.h>int main(){ int a[15] = { 15,14,13,12,11,10,9,8,7,6,5,4,3,2,1 }; int i, n; int high, mid, low; prin原创 2021-08-05 16:30:36 · 1438 阅读 · 1 评论 -
(7)找出一个二维数组中的鞍点,即该位置上的元素在该行上最大、在该列上最小。也可能没有鞍点。
找出一个二维数组中的鞍点,即该位置上的元素在该行上最大、在该列上最小。也可能没有鞍点。程序分析:设置变量j遍历一行中的每一个元素,找到一行中的最大值,用t标记该元素所在的列号,循环该列判断该值是否在该列上最小。设置变量p存储每一次判断的元素的值,设置变量k存储判断结果。#include<stdio.h>#include<math.h>#include<stdlib.h>int main(){ int a[3][3]; int i, j; int p, t原创 2021-08-05 16:25:07 · 6396 阅读 · 1 评论 -
(6)输出杨辉三角形前十行
输出杨辉三角形十行杨辉三角形:可以发现每一行除第一个和最后一个元素的值为1以外,其余元素的值都可以用通项公式:a[i][j] = a[i - 1][j - 1] + a[i - 1][j]来计算。#include<stdio.h>#include<math.h>#include<stdlib.h>int main(){ int i, j; int a[10][10] = { {1},{1,1} }; for (i = 2; i < 10; i++原创 2021-08-05 15:57:21 · 2331 阅读 · 0 评论 -
(5)将一个数组中的值按逆序重新存放。例如原来顺序为8,6,5,4,1。要求改为1,4,5,6,8
将一个数组中的值按逆序重新存放。例如原来顺序为8,6,5,4,1。要求改为1,4,5,6,8#include<stdio.h>#include<math.h>#include<stdlib.h>int main(){ int a[5]; int i; printf("Please enter a array:"); for (i = 0; i < 5; i++) { scanf_s("%d", &a[i]); } printf("原创 2021-08-05 15:33:36 · 6541 阅读 · 1 评论 -
(4)有一个已排好序的数组,要求输入一个数后,按原来排序的规律将它插入数组中
有一个已排好序的数组,要求输入一个数后,按原来排序的规律将它插入数组中程序分析:该程序需要实现两个方面:一是需要找到插入的位置,而是需要将插入的位置空出来(插入位置之后数组的每个元素后移)。设置变量i遍历数组元素以找到插入位置,设置变量j移动数组中的元素。知识点:后移数组中的元素时需要从最后一个元素开始移动,不能从第一个元素开始移动,这样会覆盖元素本身的值。不能写成一下形式:a[j+1] = a[j];#include<stdio.h>#include<math.h>原创 2021-08-05 15:28:03 · 3863 阅读 · 0 评论 -
(3)求一个3*3的整型矩阵对角线元素之和
求一个3*3的整型矩阵对角线元素之和程序分析:对角线上的元素行列下标相等,设置变量i,j分别遍历矩阵的行和列。#include<stdio.h>#include<math.h>#include<stdlib.h>int main(){ int a[3][3]; int i, j; int sum=0; printf("请输入一个3*3矩阵:\n"); for (i = 0; i < 3; i++) { for (j = 0; j <原创 2021-08-05 15:05:18 · 1243 阅读 · 0 评论 -
(2)用选择法对10个整数排序
用选择法对10个整数排序选择法排序:指每次选择所要排序的数组中的最大值(由小到大排序则选择最小值)的数组元素,将这个数组元素的值与最前面没有进行排序的数组元素的值互换。程序设计:在改例中变量i代表每次排序所选择的数组元素的值,用变量j遍历未排序的数组中的元素。若符合条件,则交换两者的值。#include<stdio.h>#include<math.h>#include<stdlib.h>int main(){ int i,j; int t; int a原创 2021-08-05 14:59:29 · 6097 阅读 · 0 评论 -
(1)用筛选法求100以内的素数
用筛选法求100以内的素数素数:除了1和该数本身以外不再有其他的因数的数被称为素数。#include<stdio.h>#include<math.h>#include<stdlib.h>int main(){ int i, j, n; for (j = 2; j <= 100; j++)//找出100以内的素数 { for (i = 2; i <= j; i++)//除数从2开始,直至循环到该数 { n = j - i * (j原创 2021-08-05 14:45:51 · 253 阅读 · 0 评论