编程环境Visual Studio 2017
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 383 384 385 386 387 388 389 390 391 392 393 394 395 396 397 398 399 400 401 402 403 404 405 406 407 408 409 410 411 412 413 414 415 416 417 418 419 420 421 422 423 424 425 426 427 428 429 430 431 432 433 434 435 436 437 438 439 440 441 |
#include <stdio.h> #include <math.h> // practice 1 void p6_1(void) { char ch[26]; ch[0] = 'a'; for (int i = 1; i < 26; i++) { ch[i] = 'a' + i; } for (int i = 0; i < 26; i++) { printf("%c ", ch[i]); } printf("\n"); return; } // practice 2 void p6_2(void) { char ch = '$'; for (int i = 0; i < 5; i++) { for (size_t j = 0; j <= i; j++) { printf("%c", ch); } printf("\n"); } return; } // practice 3 void p6_3(void) { char ch = 'F'; for (size_t i = 0; i < 6; i++) { for (size_t j = 0; j <= i; j++) { printf("%c", (ch - j)); } printf("\n"); } return; } // practice 4 void p6_4(void) { char ch = 'A'; for (size_t i = 0; i < 6; i++) { for (size_t j = 0; j <= i; j++) { printf("%c", (ch++)); } printf("\n"); } return; } // practice 5 void p6_5(void) { char ch = 0; printf("Please input an uppercase letter:"); scanf_s("%c", &ch); getchar(); int length = ch - 'A' + 1; for (size_t i = 0; i < length; i++) { char temp = 'A' - 1; for (size_t j = 0; j < (length - i - 1); j++) { printf(" "); } for (size_t j = 0; j <= i; j++) { printf("%c", ++temp); } for (size_t j = 0; j < i; j++) { printf("%c", --temp); } printf("\n"); } return; } // practice 6 #define SQUARE(X) ((X) * (X)) #define CUBE(X) ((X) * (X) * (X)) void p6_6(void) { int upper = 0; int lower = 0; printf("Please input the upper:"); scanf_s("%d", &upper); getchar(); printf("Please input the lower:"); scanf_s("%d", &lower); getchar(); printf("%10s%10s%10s\n", "number", "square", "cube"); for (size_t i = 0; i < (upper-lower+1); i++) { int number = lower + i; int square = SQUARE(number); int cube = CUBE(number); printf("%10d%10d%10d\n", number, square, cube ); } return; } // practice 7 void p6_7(void) { char string[20] = { 0 }; char rev_string[20] = { 0 }; memset(string, 0, 20); memset(rev_string, 0, 20); int length = 0; printf("Please enter the word:"); scanf_s("%s", string, 19); getchar(); printf("The word you inputed was:"); printf("%s\n", string); length = strlen(string); string[length] = '\0'; for (size_t i = 0; i < length; i++) { rev_string[i] = string[length - i - 1]; } rev_string[length] = '\0'; printf("The revert string was:%s\n", rev_string); return; } // practice 8 void p6_8(void) { double divsor1 = 0; double divsor2 = 0; printf("Please input two float number:"); while (scanf_s("%lf %lf", &divsor1, &divsor2) == 2) { getchar(); double sub = divsor1 - divsor2; double pro = divsor1 * divsor2; double result = sub / pro; printf("two number input were: %lf %lf; result = %lf\n", divsor1, divsor2, result); printf("Please input two float number:"); } return; } // practice 9 double cla(double div1, double div2) { double sub = div1 - div2; double pro = div1 * div2; double result = sub / pro; return result; } void p6_9(void) { double divsor1 = 0; double divsor2 = 0; printf("Please input two float number:"); while (scanf_s("%lf %lf", &divsor1, &divsor2) == 2) { getchar(); double result = cla(divsor1, divsor2); printf("two number input were: %lf %lf; result = %lf\n", divsor1, divsor2, result); printf("Please input two float number:"); } return; } // practice 10 void p6_10(void) { int lower = 0; int upper = 0; int sum = 0; printf("Enter lower and upper integer limits:"); scanf_s("%d %d", &lower, &upper); while (upper > lower) { getchar(); sum = 0; for (size_t i = lower; i <= upper; i++) { sum += SQUARE(i); } printf("The sums of the squares from %d to %d is %d\n", SQUARE(lower), SQUARE(upper), sum); printf("Enter next set of limits:"); scanf_s("%d %d", &lower, &upper); } printf("Done\n"); return; } // practice 11 void p6_11(void) { int iarray[9]; printf("please input 8 integer to array:"); for (size_t i = 0; i < 8; i++) { scanf_s("%d", &iarray[i]); } getchar(); printf("The array you inputed was:"); for (size_t i = 0; i < 8; i++) { printf("%d ", iarray[i]); } printf("\n"); return; } // practice 12 void p6_12(void) { signed long long item = 0; double result1 = 0.0; double result2 = 0.0; printf("Please input the item you want to check:"); scanf_s("%lld", &item); getchar(); while (item > 0) { result1 = 0.0; result2 = 0.0; for (size_t i = 1; i <= item; i++) { result1 += 1.0 / i; if (i % 2 == 1) { result2 += 1.0 / i; } else { result2 -= 1.0 / i; } } printf("the %d item result of the first sequence was %lf\n", item, result1); printf("the %d item result of the second sequence was %lf\n", item, result2); printf("Please anthor input the item you want to check:"); scanf_s("%d", &item); getchar(); } printf("Done\n"); } // practice 13 void p6_13(void) { int iarray[8]; for (size_t i = 0; i < 8; i++) { iarray[i] = pow(2, (i + 1)); } int i = 0; do { printf("array[%d] = %d\n", i, iarray[i]); i++; } while (i < 8); return; } // practice 14 void p6_14(void) { double darray1[8]; double darray2[8]; printf("Please enter 8 double into darray1:"); for (size_t i = 0; i < 8; i++) { scanf_s("%lf", &darray1[i]); } getchar(); darray2[0] = darray1[0]; for (size_t i = 1; i < 8; i++) { darray2[i] = darray1[i] + darray2[i - 1]; } for (size_t i = 0; i < 8; i++) { printf("darray1[%d] = %lf ", i, darray1[i]); } printf("\n"); for (size_t i = 0; i < 8; i++) { printf("darray2[%d] = %lf ", i, darray2[i]); } printf("\n"); return; } // practice 15 void p6_15(void) { int i = -1; char input[256]; printf("Please input the string:"); do { i++; scanf_s("%c", &input[i]); } while (input[i] != '\n'); for (size_t j = i; j > 0; j--) { printf("%c", input[j - 1]); } printf("\n"); return; } // practice 16 void p6_16(void) { double Dap = 100.0; double Dei = 100.0; int i = 0; do { i++; Dap = Dap + 10; Dei = Dei * 1.05; } while (Dei < Dap); printf("After %d year, Deirdre's account:%lf, Daphne's account:%lf\n", i, Dei, Dap); return; } // practice 17 void p6_17(void) { double Chuckie = 100.0; int i = 0; do { i++; Chuckie = Chuckie * 1.08; Chuckie -= 10; } while (Chuckie > 0); printf("After %d year, Chuckie has taken all of the money!\n", i); return; } // parctice 18 void p6_18(void) { int Rab = 5; int i = 0; do { i++; Rab -= i; Rab *= 2; printf("%d week, Rabnud has %d friends.\n", i, Rab); } while (Rab < 150); return; } int main(int argc, char **argv) { p6_18(); getchar(); return 0; } |
此文为博主原创文章,转载请注明出处
初学者表示,前几章就像小学一样,到了循环一章,课后习题好像直接上了大学,做的是一脸蒙蔽……我是不是该跳过去先过一边书再回来做题。
可能会用到后面章节的一些特性吧,要是第一次学的话,可以等看完一遍后再统一做一遍习题。博主是强烈推荐课后的编程题是一定要做一遍的,不然看完书只是知道有这个语法,等到以后要用到真正开始写程序的时候也还是会一脸懵逼的。主要还是坚持啊
太棒了,原书上练习题答案总是跳过一些题,居然在这找到了,果断关注!!其实也学了一些了,可是真的看到一道题目的时候脑子里学的东西一股脑全部涌上来,烂七八糟毫无头绪,到头来脑子一片空白,不知道你有没有经历这个过程,正如你说的,主要是坚持,向你学习!爱您!
我以前也经历过这样的过程,看着书和代码感觉是基本都理解了,但是做起习题来就连基本的语法都会弄错。坚持多练习多写写代码,这种不适感慢慢会消失的。另外刚刚开始的时候,进度是会有点慢的,不要急躁就好
自从开始学C,觉得自己真TM笨1
哈哈,没事没事。其实刚刚开始都这样,坚持一段时间就会有感觉了
18题 后面为啥要加这个 我感觉前面程序已经满足条件了。刚学习写程序 啥也不懂哈 所以瞎问 博主别介意哈
int main(int argc, char **argv)
{
p6_18();
getchar();
return 0;
}
兄弟,这是main函数啊,拿来测试上面的习题用的
老哥 12题真的没问题吗 还是我理解问题1+1/2+1/3+1/4.。。。不应该是一直小于2吗 还有底下那行 我RUN 你的程序 好像我也不太懂他的结果.....
兄弟,1+1/2+1/3+1/4就已经大于2了啊;这个主要是按照练习算法来写的,具体的求和公式名就不太记得了
我偷偷我说 你这个貌似有问题欸,我手算好像不太对 而且你的数值好大啊,em 1+1/2+1/3+1/4+1/5 = 11E了都 打印的结果 和最后的你的计算结果也不一样 不然老哥 你留个邮箱? 我题目 运行结果结果什么 的都发给你?(或许我眼拙 没注意什么地方?)
[email protected],欢迎给我发邮件!
之前没注意 现在已发 注意查收 3Q博主了
之前没注意 现在已发 注意查收
float money=100.0;
float left=100.0;
int i=0;
do
{
i++;
money=money*1.08;
left=money-10.0;
}while(left>0);
printf("after %d years money will be zreo",i);
return 0;
}
第十七题我是这样写的,但不知道哪里出错了
这个,你其实可以自己带入数字算两三个循环就能看出问题了。按照你这个写,money和left只会越来越大,是不可能会退出do while循环的
第五道练习题 内层循环条件应该是length-i-1
谢谢,改回来了!
13题应该是pow(2,i)吧
大大,我很想了解一下第七题的memset这个函数的作用是什么。我在运行后,把这俩行删除了,运行结果也是一样的。能不能告诉一下这个作用是啥。
memset作用是对一块内存地址填充为对应值,相当于初始化,具体作用你可以百度一下这个函数就好
楼主,第5题char ch = 0和scanf_s("%c", &ch);那里,为什么ch定义为int结果就是空白呢?int获取的不是也是ascii码吗
你用的是什么编译器?用visual studio是可以的
14题 double darray1[8]和for (size_t i = 0; i < 8; i++)这儿。数组不是从[0]开始的吗.
我是darray1[7],for (size_t i = 0; i <=7; i++)这样。但是最后第8个就不会显示或者0,[7]改成[8]就正常了,楼主求解
数组是从[0]开始的,你定义darray1[7],代表数组有7个成员,从[0]开始计算的话,那最大到[6],这就有7个成员了,而for(size_t i = 0; i <=7; i++),是从[0]到[7],这里有8个成员,当赋值darray1[7]的时候就会导致数组越界了
谢谢楼主回复了,意思是数组[x]里的数字实际上是代表有x个成员而不是有0~x这么个位置?也就是数组从0开始只能容纳[X-1]个?
是的,就是这个意思
楼主好!我是C初学者。然后刚进这个论坛,不太清楚评论规则。刚才发表了两次评论,我发现找不到。我又申请了个账号再来评论。希望你能看到。如有打扰之处,请谅解。感谢。
你看我把第一题这样写行不行,如果有不对的地方请一定不吝赐教。再次感谢!
#include
int main()
{
char x[26];
x[0] = 'a';
int y;
for (y = 0;y < 26;y++)
{
x[y] = 'a' + y;
printf("%c ", x[y]);
}
printf("\n");
return 0;
看起来没什么问题啊,你编译运行后得不到想要的答案吗?
头文件没拼写全
请问你写程序之前有没有什么先前步骤呀,特别是第五题开始,没有思路。不知道怎么开始。还有循环的出入条件。。。我都不能完全确定诶。。。
感觉也是看功能需求是什么,然后就会想用什么算法实现比较简单,怎么组织代码,之类的。
忘记勾选电子邮件通知了。博主你的主题太好看了,有配置文件方便发下吗谢谢
博客的主题在最底部有原作者的链接,你可以去看看
博客的主题在最底部有原作者的链接,你可以去看看
分享一个第三题有意思的写法哈哈
int i=0;
char c = 'F';
for(;i<6;c='F',printf("\n"),i++)
for(int l = 0;printf("%c",c),l<i;c--,l++);
哈哈,这个写法也可以。方法多样,能实现就行
第五题也可以这么写
#include
#include
int main(void)
{
int i;
for(i=1; i<6;i++)
{
for(int l=0;l<5-i;l++,printf(" "));
for(int p = -i+1;p<i;printf("%c",'A'+i-1-abs(p)),p++);
printf("\n");
}
}
第5题的主函数去哪了??
主函数放在源码最后
第11题要求倒序打印这8个数,这样的话是要把第二个for循环改成这样吗?
for(size_t i = 0;i < 8;i++)
{
printf("%d",ch[7-i]);
}
如果是要求倒序的话,那就按你上面写的做。当时我可能看错了
请教一下博主 第五题打印金字塔 我想用书上前面提到的变宽度输出 printf("%*c",width,ch); 但我的边界老出错 可以告诉我该怎么改嘛 我试了好几天了
你这答案复杂化了 不知道是不是故意搞这么深沉
不知道你说的是哪道题?以及你的想法是?
你们好,我是C语言的初学者
关于第7题,我填写了2个式子:
一个是#include
#include
#define SIZE 40
int main(void)
{
char words[SIZE];
int i=0;
while ((words[i] = getchar()) != '\n')
{
i++;
}
for (size_t j=i; j > 0; j--)
printf("%c", words[j-1]);
getchar();
getchar();
return 0;
}
另一个是:
#include
#include
#define SIZE 40
int main(void)
{
char words[SIZE];
int i=0;
while ((words[i] = getchar()) != '\n')
{
i++;
}
for (size_t j=i; j > 0; j--)
printf("%c", words[j-1]);
getchar();
getchar();
return 0;
}
for (size_t j=i; j > 0; j--)
printf("%c", words[j-1]);
getchar();
getchar();
return 0;
}
但我在调试的时候,一个是成功的,另一个是失败的,我不知道到底哪里产生区别了,求助大佬们。
感谢!