练习Go!
'Dream是普通小孩耶
平平无奇的秃头大学生。
【努力经营当下,直至未来明朗】
展开
-
练习18-跳水运动员排名预测!
5位运动员参加了10米台跳水比赛,有人让他们预测比赛结果:A选手说:B第二,我第三;B选手说:我第二,E第四;C选手说:我第一,D第二;D选手说:C最后,我第三;E选手说:我第四,A第一;比赛结束后,每位选手都说对了一半,请编程确定比赛的名次。思路:首先确定有五位选手a b c d e ,然后对于排名而言,五位选手均可能排名为1-5 ,故可利用五个for循环进行排名 ,再用if语句作为限制条件--根据各选手所言可以写出等式 ,但是一定要注意的是 ,每个选手的话只有一半正确 ,即:.原创 2021-09-05 17:07:59 · 142 阅读 · 0 评论 -
Choose6-strlen以及-1的二进制存储
下面代码的结果是( )int main(){ char a[1000] = {0}; int i=0; for(i=0; i<1000; i++) { a[i] = -1-i; } printf("%d",strlen(a)); return 0;}A.1000B.999C.255D.256解答:a是字符型数组,strlen找的是第一次出现尾零(即值为0)的位置。考虑到a[i]其实是字符型,如果要为0,则需要-1-i.原创 2021-09-05 16:05:11 · 194 阅读 · 0 评论 -
Choose5-数据的存储
程序的执行结果为( )int main(){ unsigned char a = 200; unsigned char b = 100; unsigned char c = 0; c = a + b; printf(“%d %d”, a+b,c); return 0;}A.300 300B.44 44C.300 44D.44 300解答:说明:printf在传入参数的时候如果是整形会默认传入四字节,所以a+b的结果是用一个四字节的整数接原创 2021-09-05 15:30:57 · 153 阅读 · 0 评论 -
Choose4- 大端字节序!
1.问题:unsigned int a= 0x1234;unsigned char b=*(unsigned char *)&a;在32位大端模式处理器上变量b等于( )A.0x00B.0x12C.0x34D.0x12342.解答:1)unsigned int a= 0x1234; //十六进制下为: 00 00 12 34 !!!-32位下unsigned char b=*(unsigned char *)&a; //b被 a的首元素...原创 2021-08-07 17:12:19 · 169 阅读 · 0 评论 -
Choose3-指针等价
以下关于指针的说法,正确的是____ A. int *const p 与 int const *p 等价 B. const int *p 与 int *const p 等价 C. const int *p 与 int const *p 等价 D. int *p[10] 与 int (*p)[10] 等价原创 2021-08-01 21:13:04 · 137 阅读 · 0 评论 -
Choose2-sizeof strlen 以及指针!
下面程序的输出结果为多少(32位机器)?void Func(char str_arg[2]) { int m = sizeof(str_arg); int n = strlen(str_arg); printf("%d\n", m); printf("%d\n", n); }int main(void) { char str[] = "Hello";Func(str); }解答:void Func(char str_arg[2])...原创 2021-07-31 23:33:47 · 75 阅读 · 0 评论 -
Choose1-空指针!
1.题目:空指针是指()。A.所指向的空间位置未存放任何数据的指针B.所指向的空间位置存放着数据0的指针C.所指向的空间位置可用于存放任何类型数据的指针D.所指向的空间位置就是地址0的指针2.解答:D空指针是一个特殊的指针值。空指针是指可以确保没有指向任何一个对象的指针。通常使用宏定义NULL来表示空指针常量值。NULL就代表系统的0地址单元!!空指针确保它和任何非空指针进行比较都不会相等,因此经常作为函数发生异常时的返回值使用。3.补充:避免某个指针是否为野指针原创 2021-07-31 23:13:38 · 347 阅读 · 1 评论 -
练习19-判断左旋字符串 !
1.问题写一个函数,判断一个字符串是否为另外一个字符串旋转之后的字符串。例如:给定s1 = AABCD和s2 = BCDAA,返回1给定s1 = abcd和s2 = ACBD,返回0.AABCD左旋一个字符得到ABCDAAABCD左旋两个字符得到BCDAAAABCD右旋一个字符得到DAABC2.代码 (VS2019)#include<stdio.h>#define max 100//输出长度int Len(char* ch){ int i = 0; i原创 2021-08-10 23:13:56 · 100 阅读 · 0 评论 -
练习17- 数组与指针 !
1. 下面代码的执行结果是()#include <stdio.h>int main(){ char str1[] = "hello bit."; char str2[] = "hello bit."; char *str3 = "hello bit."; char *str4 = "hello bit."; if(str1 == str2) printf("str1 and str2 are same\n"); else printf("str1原创 2021-08-10 15:40:47 · 74 阅读 · 0 评论 -
练习16- 模拟pow !
1.问题:模拟实现函数 pow(x,y) , 即实现运算x^y(x的y次方), 这里x和y都为整数。2.代码:注意要将次方数分成3部分: >0 ==0 <0可以递归实现!#include<stdio.h>//递归-y次x相乘double Pow(int x, int y) //关注点1 double!!{ if (y > 0) { return (x * Pow(x, y-1)); } else if (0 =...原创 2021-08-07 21:47:28 · 99 阅读 · 0 评论 -
练习15- strcpy !
1.问题:以下程序的运行结果是-#include<stdio.h>int main() { char str[] = "ABCDEFG"; char *p1, *p2; p1 = "abcd"; p2 = "efgh"; strcpy (str+1, p2+1 ); strcpy (str+3, p1+3 ); printf("%s\n", str); return 0; } 2.解答:#include<stdio.h>int main原创 2021-08-06 21:22:31 · 406 阅读 · 0 评论 -
练习14- 回文数!
1.编写一个函数,求一个数字是否是回文数。回文数概念:给定一个数,这个数顺读和逆读都是一样的。例如: 121,1221是回文数,123,1231不是回文数。 2. 思路:参考“水仙花数”!!3.代码://参照“水仙花”!#include<stdio.h>void IsEchoNum(int n){ int num = 0; int sum = 0; for (num = n;num > 0; num /= 10) //此处是num! { in.原创 2021-08-06 00:21:55 · 200 阅读 · 0 评论 -
练习13- #define 宏定义 !
1.1问题:执行下列程序:#define MA(x,Y) (X*Y)i = 5;i = MA( i , i+1 ) - 7;变量i的值应为()A.19B.30C.1D.231.2.解答:#define 宏定义只是替换,MA(i,i+1)替换成x = i,y = i + 1。执行 x * y == i * i + 1(注意此处i + 1没有括号)。所以结果是26,最终结果是192.1.类似问题:下面程序运行结果是______________...原创 2021-08-06 00:14:31 · 1127 阅读 · 0 评论 -
练习12-判断是否为2的次数
1,问题:任意输入一个整数,判断这个整数是否为2的次方数。2.代码——通过任意写出几个符合条件的数可知:其二进制只含有一个1-- n&(n-1)==0原创 2021-08-04 23:43:22 · 79 阅读 · 0 评论 -
练习11-二进制表示时 1出现的次数
1.问题:随意输入一个整数,求这个整数用二进制表示时1出现的次数。2.代码:1)用 按位与&12)用%2 /2法-注意负数-应该使用 unsigned int 类型 (不是绝对值!)3)用 n=n&(n-1) --大致写出几个二进制表示即可得到规律...原创 2021-08-04 23:33:50 · 158 阅读 · 0 评论 -
练习10-static !
1.问题:下面程序的输出为:int f(int n){static int i = 1;if(n >= 5)return n;n = n+i;i++;return f(n);}int main(){printf( "%d\n",f(1));}2.答案为: 73.过程如下:int f(int n) //此时由main函数知 n=1{static int i = 1; //静态局部变量,只运行一次,生命周期延长if(n >= 5) //..原创 2021-08-04 18:04:28 · 140 阅读 · 0 评论 -
练习9- 字符串逆序!
1.问题:写一个函数,可以逆序一个字符串的内容。(VS2019编译器)2.代码:1)方法一:用数组下标法#include<stdio.h>#include<string.h>void reverse(char* arr){ unsigned int len = strlen(arr); //strlen返回是 unsigned int int left = 0; int right = len - 1; while (left < .原创 2021-08-07 16:54:35 · 143 阅读 · 0 评论 -
练习8-越界死循环!
一定要关注的点:对于全局变量和局部变量的理解!在main()函数中定义的变量是局部变量 而非全局变量 只是其具有跟全局变量一样的生命周期全局变量一定是定义在函数外部的!VS2019开发环境调试下面的代码,画图解释下面代码的问题#include <stdio.h>int main(){ int i = 0; int arr[] = {1,2,3,4,5,6,7,8,9,10}; for(i=0; i<=12; i++) {原创 2021-08-03 16:21:00 · 207 阅读 · 0 评论 -
练习7-区分指针的两种++ !
首先:数组名代表首元素地址!-指针类型1.如下:!!针对的变化是:*(p+i)-是解引用后的值!-此题表示:指针p指向数组arr-解引用后被赋值 -改变的是指针指向的的值!!!故p改变-arr同样也改变注:输出为 0 0 3 4 5 -注意类型强制转换!2.如下:此题用样地:指针p指向数组s-但是注意关注点:p++ 针对的是指针++ 改变的是 p 的地址能够指向下一个 - p++只是改变了指针本身!不影响s-首元素地址#include<stdi...原创 2021-08-03 00:15:00 · 105 阅读 · 0 评论 -
练习6-字符逆序!
1.问题:将一个字符串str的内容颠倒过来,并输出。str的长度不超过100个字符。要求:有输入一串字符串 可包含空格(VS2019)2.解答:1)#include<stdio.h>#define Max 100void Scanf(char* ch, int n){ int i = 0; for (i = 0; i < n; i++) { scanf("%c", (ch + i)); if (*(ch + i) == '\n') .原创 2021-08-02 19:02:49 · 67 阅读 · 0 评论 -
练习5-a的前五项之和!
题目:求Sn=a+aa+aaa+aaaa+aaaaa的前5项之和,其中a是一个数字。例如:2+22+222+2222+22222(VS2019)代码:1.利用函数-次方函数和求和函数#include<stdio.h>//计算10的i次方int Pow(int i,int a){ if ( i > 0) { //int tmp = 10 * Pow(i - 1, a); //return (a * tmp); 循环乘以a //int原创 2021-07-31 21:48:49 · 117 阅读 · 0 评论 -
练习4-数组元素出现次数!
编写函数: 求数组中元素出现次数超过数组长度一半的数字。如: {1,2,3,2,2,2,5,4,2} 数字 2 为超过数组长度一 半的数字。代码如下:(VS2019)#include<stdio.h>void Init(int* ch, int n){ int i = 0; for (i = 0; i < n; i++) { scanf("%d", &ch[i]); //printf("%d ", ch[i]); }}//查找!void..原创 2021-07-31 20:56:31 · 109 阅读 · 0 评论 -
练习3-真假、算术转换及全局变量的初始化!
下面代码的结果是:A.>B.<C.不输出D.程序有问题#include <stdio.h>int i;int main(){ i--; if (i > sizeof(i)) { printf(">\n"); } else { printf("<\n"); } return 0; }解答:注意点:if的判断-真假!全局变量,没原创 2021-07-31 18:19:16 · 63 阅读 · 0 评论 -
练习2-指针加减(十六进制)!
下面代码的结果是:( )#include <stdio.h>int main(){ int arr[] = {1,2,3,4,5}; short *p = (short*)arr; int i = 0; for(i=0; i<4; i++) { *(p+i) = 0; } for(i=0; i<5; i++) { printf("%d ", arr[i]); } return 0;}解答:..原创 2021-08-01 20:47:33 · 139 阅读 · 0 评论 -
练习1-(递归)字符串逆序
编写一个函数 reverse_string(char * string)(递归实现)实现:将参数字符串中的字符反向排列,不是逆序打印。要求:不能使用C函数库中的字符串操作函数。比如:char arr[] = “abcdef”;逆序之后数组的内容变成:fedcba//递归#include<stdio.h>#include<string.h>int my_strlen(char* string){ if (*string == '\0') { return 0;原创 2021-07-27 00:58:25 · 122 阅读 · 0 评论