C语言课程设计实习报告

时间:2019-05-14 17:00:30下载本文作者:会员上传
简介:写写帮文库小编为你整理了多篇相关的《C语言课程设计实习报告》,但愿对你工作学习有帮助,当然你在写写帮文库还可以找到更多《C语言课程设计实习报告》。

第一篇:C语言课程设计实习报告

C语言课程设计实习报告

题目

一、两个大数相乘问题

题目描述:本问题中,要求输入两个相对较大的正整数,能够通过程序计算出其结果。设计思路:用数组存储一个大数,数组的每个单元存储一位数据,结果的存储需要一个更大的数组。在解决了存储问题后,我们需要来实现乘法运送的过程,也就是说必须要把这个数组中的每一位数字单独来进行乘法运算,比如可以用一个数字和另外一个数组中的每一位去相乘,从而得到乘法运算中一行的数字,再将每一行数字错位相加。这就是乘法运算的过程。

运行效果图

附源程序如下:

#include #include #include #define SIZE 10000 char a[SIZE],b[SIZE];int c[SIZE];int main(){ int i,j,la,lb;printf(“输入第一个大数:n”);scanf(“%s”,a);printf(“输入第二个大数:n”);scanf(“%s”,b);la=strlen(a);lb=strlen(b);for(i=0;i=0;i--)printf(“%d”,c[i]);printf(“n”);return 0;} 题目

二、购房排队程序

题目描述

【要求】假定文本文件a1.txt中的内容是我校南望山庄二期购房报名名单,其中职称0为博导、教授,1为正教授,2为副教授,3为讲师,4为助教。请编程完成排名顺序。排队原则为首先按照职称排序,职称高者排前面,如职称一样的情况下按工龄排,工龄一样的情况下按年龄排,以此类推。将排序后的名单存入另外一个文本文件中,假设为a2.txt。另假定此次房源只有200套,请将前200名存入a3.txt文件中。

设计思路:

建立一个结构体数组,根据文本文件a1.txt中的内容,利用一个公式每个人得到一个成绩,根据每人的成绩高低排序,且排序结果与题目要求的相符。

运行效果图

附源程序如下

#include typedef struct//定义一个结构体 { char name[10];int zc,workage,age,score;}TCH;

void sort(TCH *a, int n)//根据score的大小排序,分数高者排在前面 {

} int i,j;TCH t;for(i=0;i

for(j=i+1;j

{

} t=a[i];a[i]=a[j];a[j]=t;void main(){ int i,n=0;TCH a[1000];

FILE *fp;fp=fopen(“a1.txt”,“r”);while(!feof(fp)){ i=fscanf(fp,“%s%d%d%d”,&a[n].name,&a[n].zc,&a[n].workage,&a[n].age);if(i<4)break;

a[n].score =(5-a[n].zc)* 10000 +(a[n].workage)* 100 +(a[n].age);//计算每人的分数

n++;

} fclose(fp);sort(a,n);fp=fopen(“a2.txt”,“w”);//建立a2文本文档并将排序后的结果存入其中 for(i=0;i

序号 姓名 得分(Score)1 翁泽婷 55491 2 孙礼全 55483 3 霍少磊 55482 4 巴金 55481 5 程斌 55476 6 王天奇 55476 7 赵文鹏 55390 8 王兴龙 55387 9 张成志 55380 10 龚林锋 55376 11 甘传奇 55286 12 曾威 55286 13 胡浩 55281 14 杨明宇 55279 15 张利亚 55276 16 孙涛 55275 17 周渝 55187 18 徐振飞 55176 19 魏雯 55087 20 郭妙引 55081 21 杨德山 55081 22 钟南翀 55076 23 黄愉晋 54977 24 杨培 54969 25 李晓峰 54884 26 郭瑞玲 54882 27 徐颖 54877 28 金鹏 54875 29 付磊 54871 30 张银峰 54869 31 江政波 54868 32 吕萍 54781 33 尹金香 54768 34 冯海顺 54678 35 冯永岗 54669 36 刘蓓蓓 54668 37 赵永 54576 38 曹放 54566 39 张飞 54563 40 赵端昌 54379 41 庞龙飞 54374 42 郑丹 54374 43 董家兴 54372 44 林楠 54369 45 徐玉军 54362 46 李杰 54279 47 李博 54264 48 罗胜元 54170 49 王恒宇 54169 50 夏健 54160 51 曹阳 54069 52 陈勋 54066 53 唐铭 54062 54 舒朗 54060 55 王彦军 54059 56 付天宇 53976 57 陈晓翠 53969 58 罗森文 53968 59 龚振宇 53871 60 徐军辉 53868 61 郑保红 53862 62 罗会涛 53857 63 许程 53769 64 周文虎 53756 65 刘飞 53755 66 孙海涛 53658 67 蔡宁波 53657 68 樊航宇 53656 69 高成 53572 70 杨超 53553 71 贾盼盼 53469 72 张闻璟 53462 73 陈永照 53458 74 陈亚娣 53457 75 刘佳 53359 76 周荣贵 53358 77 饶宁 53358 78 彭鸿燕 53356 79 李国山 53259 80 姚田万 53254 81 王梅 53165 82 邓大飞 53159 83 张响荣 53150 84 杨承志 53060 85 宋吉峰 53054 86 杨健 53052 87 陈曦 53049 88 罗华 52958 89 刘璐 52860 90 邓新 52854 91 杨振 52848 92 许艳华 52752 93 张超 52749 94 童瑶函 52646 95 胡波 52645 96 方明慧 52562 97 何帆 52545 98 张宗言 44985 99 韩博洋 44982 100 秦明举 44977 101 刘国权 44870 102 向雄 44869 103 樊自春 44868 104 孙迎河 44868 105 张庆 44782 106 王德富 44774 107 高雅洁 44771 108 邸欣月 44766 109 张军 44682 110 袁东勋 44677 111 王强 44669 112 麻晓雨 44573 113 耿显雷 44565 114 周维维 44477 115 王伟洁 44477 116 马彦云 44475 117 郭峰亮 44466 118 王菲菲 44371 119 彭聪 44276 120 智铎强 44275 121 路晓亮 44273 122 杨志军 44266 123 王丹 44168 124 龙胜清 44167 125 骆逸婷 44166 126 潭松成 44074 127 邓柏松 44072 128 尹丹 44067 129 林川 44064 130 吴灵敏 44064 131 邢利琦 43975 132 赵莹彬 43958 133 易飞 43868 134 邵菁清 43866 135 杨帅 43865 136 徐子一 43862 137 郑周顺 43858 138 刘念 43770 139 陈剑波 43769 140 洪广福 43758 141 刘建宁 43756 142 徐华 43664 143 郑希 43560 144 赵志江 43471 145 谢福兵 43465 146 成浩 43461 147 李浩 43459 148 吴林忠 43452 149 刘芳 43452 150 李建峰 43365 151 杨栋 43359 152 刘俊红 43353 153 周兵 43262 154 刘旭明 43260 155 王强 43260 156 金亮宇 43258 157 朱俊翔 43163 158 王文洋 43157 159 张宗肖 43057 160 江潮 43055 161 刘常利 43051 162 董泽 42962 163 李伟伟 42955 164 王磊 42947 165 黄振威 42861 166 谭江渝 42859 167 杨勇 42763 168 高连涛 42762 169 吴剑 42758 170 付亮 42661 171 宋涛 42660 172 张冰冰 42652 173 王琰 42650 174 刘园 42647 175 刘伟 42555 176 魏凡 42554 177 杨逛 42553 178 赵进飞 42550 179 张震 42458 180 周晓宇 42455 181 付黎明 42448 182 张月峰 42356 183 吴元莉 42355 184 吴树春 42341 185 宫雪 42257 186 李永祥 42257 187 任志媛 42254 188 王伟虎 42158 189 李薏新 42146 190 吴皓 42145 191 刘振一 42056 192 王坤 42055 193 苗顺占 42052 194 何磊 42047 195 张行 42046 196 张矿 42039 197 张俊涛 34467 198 黄志全 34462 199 谢文涛 34379 200 江南 34378 201 陈旭 34373 202 易星 34372 203 沈芳 34363 204 罗恒 34277 205 包少明 34276 206 雷闯 34274 207 李学环 34269 208 孙辉 34264 209 杨文和 34170 210 洪冬 34075 211 高翔 34066 212 程鲁文 34066 213 俞璟睿 34058 214 刘和彪 34058 215 唐克非 33973 216 吴骏 33965 217 杨晓霞 33867 218 宁文鹤 33863 219 张涛 33770 220 陈雪娇 33767 221 梁波 33758 222 谈祥君 33757 223 胡晓芳 33756 224 智刚 33666 225 刘亮 33663 226 杨加亮 33658 227 王智 33658 228 唐开江 33571 229 王晓龙 33566 230 李彬 33564 231 李欢 33563 232 王军伟 33561 233 林向洋 33467 234 田梦黎 33461 235 吴言根 33455 236 赵亮 33453 237 严安 33370 238 谭子恒 33366 239 桂蕾 33364 240 沈璟璟 33361 241 杨吉伟 33357 242 张亮 33357 243 李伟 33352 244 张爽 33267 245 牛明远 33255 246 杨传超 33250 247 德西央宗 33155 248 兰天永 33154 249 朱金全 33149 250 方俊 33063 251 朱光辉 33056 252 邱红文 32963 253 赵远亮 32956 254 张晓兵 32859 255 刘仁专 32858 256 李韬 32856 257 陆竑宇 32855 258 梁俊俊 32850 259 贾玉洁 32846 260 李翔 32761 261 陈磊 32755 262 董立 32752 263 毛玉娇 32661 264 杨艳霞 32659 265 商震 32645 266 耿帆 32558 267 温建荣 32557 268 岑文攀 32550 269 李永宗 32460 270 周虎 32455 271 戴确男 32450 272 谭维佳 32442 273 施秋华 32354 274 于斌 32354 275 徐婷 32353 276 张楗钰 32352 277 熊凤娟 32351 278 姚品品 32346 279 方星 32343 280 李朝晖 32258 281 李栋广 32252 282 蔡晓亮 32250 283 王艳红 32249 284 李岩 32151 285 龚红梅 32150 286 李春阳 32150 287 王崖钦 32148 288 李卫民 32053 289 任中杰 31952 290 胡谦 31942 291 李沁泽 31850 292 孙广义 31849 293 栾燕 31839 294 李涛涛 31745 295 兰元丽 31744 296 杨云飞 31738 297 金鑫 31648 298 赵春茹 31644 299 王政 31548 300 叶春辉 31545 301 葛鹏 31535 302 张朝阳 23976 303 王钦贤 23974 304 高书杰 23971 305 张乾 23968 306 罗敏 23967 307 李文斌 23868 308 彭泽建 23866 309 王晓红 23863 310 夏晓燕 23861 311 刘力 23860 312 张海坤 23767 313 姚鹏程 23758 314 王夏 23665 315 严志伟 23661 316 张玮 23659 317 钟发基 23569 318 黄俊 23554 319 周岩 23471 320 刘志海 23466 321 蒋思勇 23461 322 杨勇 23453 323 徐彬彬 23366 324 周文雯 23365 325 卢刚 23363 326 叶彬 23358 327 文军 23268 328 王强波 23265 329 王伟 23260 330 赵建州 23257 331 罗旋峰 23256 332 杜泽辉 23255 333 曹东梅 23152 334 方权 23049 335 谭文权 22963 336 鲁有海 22962 337 杨贵来 22950 338 肖莉丽 22948 339 肖虎 22857 340 刘德利 22852 341 崔丽峰 22848 342 池小波 22847 343 薛生升 22763 344 韩磊 22748 345 陈甲才 22745 346 王生龙 22647 347 宁汉虎 22644 348 易峰 22561 349 孙维昌 22554 350 饶松 22552 351 钟妮 22544 352 格桑加措 22450 353 廖宗宝 22445 354 朱龙剑 22443 355 向鹏 22442 356 侯涛 22352 357 王海涛 22348 358 益西培杰 22348 359 李欣 22341 360 朱传伟 22252 361 王佳营 22249 362 欧阳洋 22247 363 随树波 22245 364 袁丹丹 22154 365 陈林 22147 366 汪洪强 22142 367 马奎祥 22048 368 何良伦 22038 369 满红梅 22038 370 宗睿元 21950 371 李涛 21949 372 黄俊 21847 373 黄佳 21845 374 赵玉龙 21845 375 代贞伟 21843 376 金晓波 21751 377 梅芹芹 21748 378 刘鹏飞 21737 379 张暑光 21647 380 赵锐 21639 381 张良刚 21636 382 张超 21635 383 刘杰 21635 384 王宏 21550 385 钟玉婷 21549 386 方莉丽 21541 387 雷亚平21539 388 侯宗博 21539 389 邬彪彪 21449 390 王泽鹏 21441 391 马成斐 21435 392 代广涛 21434 393 徐任章 21350 394 邓焰平21348 395 姜超 21339 396 寸金鸿 21338 397 魏继雨 21333 398 聂琼 21333 399 石步星 21244 400 严涛 21235 401 汪玉玲 21148 402 章志华 21133 403 姜兰 21133 404 王权 21133 405 邢琼 21045 406 刘勇 21039 407 周广镇 21029 408 谢小长 13355 409 王新荣 13354 410 田阳辉 13258 411 陈艮省 13252 412 洪柳 13168 413 殷力立 13064 414 杨小伟 13052 415 周昱辰 13051 416 冯培智 13049 417 周芳旭 13048 418 赵凯 12959 419 吴晓勤 12957 420 韦宇 12948 421 高超 12947 422 刘莹莹 12857 423 张小达 12854 424 邬建斌 12762 425 陈武珍 12761 426 王强 12753 427 王修平12746 428 张巍 12660 429 陈杰 12656 430 吕振宇 12656 431 王亮亮 12655 432 吴玉峰 12644 433 韩霞光 12555 434 吴亚君 12553 435 陈雯雯 12447 436 许新芳 12444 437 林贵 12443 438 曲扎 12359 439 朱杰清 12347 440 罗添 12345 441 张俭峰 12345 442 吴瑾 12343 443 张春生 12252 444 郭华 12248 445 罗钢 12245 446 杜威 12243 447 肖潇 12143 448 张玉峰 12053 449 黄卫 12046 450 王公位 12043 451 杨立文 12040 452 史雅静 11951 453 胡炜 11949 454 张逊 11942 455 胡志强 11941 456 胡程 11847 457 金磊 11846 458 李正财 11844 459 王梦涵 11754 460 张良 11746 461 张康 11736 462 李强 11643 463 陈晓 11642 464 薛远超 11545 465 王丹 11538 466 梁洪才 11450 467 赵岩 11438 468 田凯 11435 469 王西峰 11350 470 张超 11350 471 陈健 11346 472 邱轩 11343 473 刘刚 11337 474 尚小亮 11334 475 李俊 11333 476 张继军 11333 477 将幸福 11242 478 王岚 11141 479 朱永伟 11137 480 尼玛桑珠 11040 481 李苗 11040 482 冯涛 11038 483 曹进军 11037 484 戴耿师 11033 485 陈远兴 11033 486 董永刚 10943 487 于洋 10941 488 王波 10935 489 张磊 10932 490 杨正辑 10931 491 汪海洋 10928 492 霍振雷 10839 493 董峻麟 10835 494 郭巍 10738 495 贺玉川 10730 496 陈志柠 10730 497 李程 10634 498 崔炳松 10627 499 富金金 10625 500 武登辉 10538 501 王靖 10536 502 乔少华 10531 503 陈折 10528 504 冯延俊 10526 505 白云哲 10526 a3文本文档如下

序号 姓名 1 翁泽婷 55491 2 孙礼全 55483 3 霍少磊 55482 4 巴金 55481 5 程斌 55476 6 王天奇 55476 7 赵文鹏 55390 8 王兴龙 55387 9 张成志 55380 10 龚林锋 55376 11 甘传奇 55286 12 曾威 55286 13 胡浩 55281 14 杨明宇 55279 15 张利亚 55276 16 孙涛 55275 17 周渝 55187 18 徐振飞 55176 得分(Score)19 魏雯 55087 20 郭妙引 55081 21 杨德山 55081 22 钟南翀 55076 23 黄愉晋 54977 24 杨培 54969 25 李晓峰 54884 26 郭瑞玲 54882 27 徐颖 54877 28 金鹏 54875 29 付磊 54871 30 张银峰 54869 31 江政波 54868 32 吕萍 54781 33 尹金香 54768 34 冯海顺 54678 35 冯永岗 54669 36 刘蓓蓓 54668 37 赵永 54576 38 曹放 54566 39 张飞 54563 40 赵端昌 54379 41 庞龙飞 54374 42 郑丹 54374 43 董家兴 54372 44 林楠 54369 45 徐玉军 54362 46 李杰 54279 47 李博 54264 48 罗胜元 54170 49 王恒宇 54169 50 夏健 54160 51 曹阳 54069 52 陈勋 54066 53 唐铭 54062 54 舒朗 54060 55 王彦军 54059 56 付天宇 53976 57 陈晓翠 53969 58 罗森文 53968 59 龚振宇 53871 60 徐军辉 53868 61 郑保红 53862 62 罗会涛 53857 63 许程 53769 64 周文虎 53756 65 刘飞 53755 66 孙海涛 53658 67 蔡宁波 53657 68 樊航宇 53656 69 高成 53572 70 杨超 53553 71 贾盼盼 53469 72 张闻璟 53462 73 陈永照 53458 74 陈亚娣 53457 75 刘佳 53359 76 周荣贵 53358 77 饶宁 53358 78 彭鸿燕 53356 79 李国山 53259 80 姚田万 53254 81 王梅 53165 82 邓大飞 53159 83 张响荣 53150 84 杨承志 53060 85 宋吉峰 53054 86 杨健 53052 87 陈曦 53049 88 罗华 52958 89 刘璐 52860 90 邓新 52854 91 杨振 52848 92 许艳华 52752 93 张超 52749 94 童瑶函 52646 95 胡波 52645 96 方明慧 52562 97 何帆 52545 98 张宗言 44985 99 韩博洋 44982 100 秦明举 44977 101 刘国权 44870 102 向雄 44869 103 樊自春 44868 104 孙迎河 44868 105 张庆 44782 106 王德富 44774 107 高雅洁 44771 108 邸欣月 44766 109 张军 44682 110 袁东勋 44677 111 王强 44669 112 麻晓雨 44573 113 耿显雷 44565 114 周维维 44477 115 王伟洁 44477 116 马彦云 44475 117 郭峰亮 44466 118 王菲菲 44371 119 彭聪 44276 120 智铎强 44275 121 路晓亮 44273 122 杨志军 44266 123 王丹 44168 124 龙胜清 44167 125 骆逸婷 44166 126 潭松成 44074 127 邓柏松 44072 128 尹丹 44067 129 林川 44064 130 吴灵敏 44064 131 邢利琦 43975 132 赵莹彬 43958 133 易飞 43868 134 邵菁清 43866 135 杨帅 43865 136 徐子一 43862 137 郑周顺 43858 138 刘念 43770 139 陈剑波 43769 140 洪广福 43758 141 刘建宁 43756 142 徐华 43664 143 郑希 43560 144 赵志江 43471 145 谢福兵 43465 146 成浩 43461 147 李浩 43459 148 吴林忠 43452 149 刘芳 43452 150 李建峰 43365 151 杨栋 43359 152 刘俊红 43353 153 周兵 43262 154 刘旭明 43260 155 王强 43260 156 金亮宇 43258 157 朱俊翔 43163 158 王文洋 43157 159 张宗肖 43057 160 江潮 43055 161 刘常利 43051 162 董泽 42962 163 李伟伟 42955 164 王磊 42947 165 黄振威 42861 166 谭江渝 42859 167 杨勇 42763 168 高连涛 42762 169 吴剑 42758 170 付亮 42661 171 宋涛 42660 172 张冰冰 42652 173 王琰 42650 174 刘园 42647 175 刘伟 42555 176 魏凡 42554 177 杨逛 42553 178 赵进飞 42550 179 张震 42458 180 周晓宇 42455 181 付黎明 42448 182 张月峰 42356 183 吴元莉 42355 184 吴树春 42341 185 宫雪 42257 186 李永祥 42257 187 任志媛 42254 188 王伟虎 42158 189 李薏新 42146 190 吴皓 42145 191 刘振一 42056 192 王坤 42055 193 苗顺占 42052 194 何磊 42047 195 张行 42046 196 张矿 42039 197 张俊涛 34467 198 黄志全 34462 199 谢文涛 34379 200 江南 34378 题目三学生信息管理系统设计

题目描述

学生信息包括:学号,姓名,年龄,性别,出生年月,地址,电话,E-mail等。试设计一学生信息管理系统,使之能提供以下功能: 系统以文本菜单方式工作,学生信息录入功能(学生信息最好用文件保存)---输入 学生信息浏览功能---输出 查询、排序功能---算法

按学号查询 按姓名查询

学生信息的删除与修改(可选项)

设计思路

自定义一系列的函数实现本系统的的所有功能选项,通过switch-case来实现菜单选项。通过函数的调用,最终实现并输出我们所需的学生信息。

运行效果图

附源程序如下 #include #include #include #include struct student { int StuNo;char name[10];int age;char sex[10];char birthady[20];char tel[20];char nativeplace[50];char email[50];}st[50];

int i=0;void input(){ char a;do{ printf(“n请输入学号:”);scanf(“%d”,&st[i].StuNo);fflush(stdin);printf(“n请输入姓名:”);gets(st[i].name);printf(“n”);printf(“请输入年龄:”);scanf(“%d”,&st[i].age);fflush(stdin);printf(“n请输入姓别:”);gets(st[i].sex);fflush(stdin);printf(“n请输入生日:”);gets(st[i].birthady);printf(“n请输入电话:”);gets(st[i].tel);fflush(stdin);printf(“n请输入籍贯:”);gets(st[i].nativeplace);

fflush(stdin);printf(“n请输入邮箱:”);gets(st[i].email);printf(“n是否继续输入另外一个学生信息?(y/n)”);fflush(stdin);a=getchar();i++;}while(a=='y' && i<=50);

}//输入学生的每一项信息

void display()//显示学生信息 { int j;printf(“学号t姓名t年龄t性别t生日t电话tt籍贯tttt邮箱n”);for(j=0;j

void sort()//按年龄从大到小排序函数 { int j,k;int temp;for(j=0;j

void find1()//按学生姓名查找学生信息 { int m;char name[20],b;do {

printf(“n请输入想查找的学生姓名:”);fflush(stdin);gets(name);for(m=0;m

{ if(strcmp(name,st[m].name)==0)

{ printf(“nt您查找的学生在第%d个位置找到了!!n”,m+1);break;} } if(m>=20)printf(“nt没有找到这个学生!!n”);else { printf(“学号t姓名t年龄t性别t生日t电话tt籍贯tttt邮箱n”);printf(“%-8d%-8s%-8d%-8s%-8s%-16s%-32s%-sn”,st[m].StuNo,st[m].name,st[m].age,st[m].sex,st[m].birthady,st[m].tel,st[m].nativeplace,st[m].email);} printf(“n是否要查找另一个学生的信息?请输入(y/n)”);fflush(stdin);b=getchar();

}while(b=='y');} void find2()//按学生学号查找学生信息 { int m;int StuNo,b;do { printf(“n请输入您想查找的学生学号:”);fflush(stdin);scanf(“%d”,&StuNo);for(m=0;m=20)printf(“nt没有找到这个学生!!n”);else { printf(“学号t姓名t年龄t性别t生日t电话tt籍贯tttt邮箱n”);printf(“%-8d%-8s%-8d%-8s%-8s%-16s%-32s%sn”,st[m].StuNo,st[m].name,st[m].age,st[m].sex,st[m].birthady,st[m].tel,st[m].nativeplace,st[m].email);} printf(“n是否查找另一个学生的信息?(y/n)”);fflush(stdin);b=getchar();

}while(b=='y');

}

void del()//删除学生信息 { char name[20],c;int a,b;do { printf(“n请输入要删除的学生姓名:n”);fflush(stdin);gets(name);for(a=0;ai)printf(“t很抱歉没有找到这个学生!!n”);else { i--;display();}

printf(“n是否继续删除另一个学生信息?(y/n)”);fflush(stdin);c=getchar();}while(c=='y');}

void insert()//插入学生信息 { input();sort();}

void main()//主函数 { int change;

do{ system(“cls”);printf(“>>>>>>>>>>>>>>>>>>>>欢迎进入学生信息管理系统<<<<<<<<<<<<<<<<<<<

第二篇:C语言课程设计实习报告范本

C语言课程设计实习报告

学生姓名: 萱冰伊寒 学 号: 22 日 期: 2011年3月3日

目录

一、程序分析与设计.......................................................................................................................1

二、流程图.......................................................................................................................................1

三、源程序清单...............................................................................................................................4

四、调试过程.................................................................................................................................10

五、程序有待改进的地方.............................................................................................................10

六、本次实习的收获和建议.........................................................................................................11 附录................................................................................................................................................11

C语言课程设计实习报告

一、程序分析与设计

1、使用分模块处理的函数形式,主调函数包括九个分函数,分别是: void read();//读文本

void write();//写文本

void average();//求每个学生平均分

void rank();//排名次

void courseaver();//求各科平均分 void nopass();//求不及格学生名单 void excellent();//求优等生名单

void fenshuduan();//求各分数段人数

void menu();//菜单

2、调用主函数,首先进入菜单,选择需要显示的内容。

3、用记事本编辑文件1.dat存储一个班学习成绩。然后在C环境下,建立一个学生信息的结构体,用r方式打开上述文件,再用fscanf读入、用printf在屏幕上显示文件内容。

4、利用循环使每个学生的三门功课的成绩相加,然后再把和除以三就得到了平均成绩。接着用冒泡法利用平均分的高低排出名次。最后用fprintf将每个学生的信息写入到2.dat文件。

5、利用循环将各个科目的所有分数相加后除以人数求出各科的平均分。

6、利用循环和if判断语句以10分为一个分数段(60分以下统一记为一个分数段),求出各个分数段的人数。

7、利用循环和if判断语句将各个科目小于60分的学生信息输出。

8、利用循环和if条件语句,添加一些限制条件:1)平均成绩大于90分;或平均分大于85分且至少有一门功课为100分;或者平均分大于85分且至少两门课程成绩为95分以上; 2)名次在前三名3)每门功课及格以上;作为优等生的最低要求,将优等生的名单输出。

9、结束程序。

二、流程图

(1)主程序

资工(基)10901 唐雪枭

(2)菜单

(4)读文本

(3)求各学生平均分

(5)写文本

C语言课程设计实习报告

(6)求名次

(7)求各科平均分

(8)求各科分数段

资工(基)10901

唐雪枭

(9)求不及格学生及优等生

三、源程序清单

#include #include #define N 20 struct student { int num;char name[20];int score[3];double aver;int mc;}stu[N];int E[5],math[5],wu[5];float mathaver;float wuaver;float eaver;4

C语言课程设计实习报告

void read();//读文本

void write();//写文本

void average();//求每名同学的平均分 void rank();//排名次

void courseaver();//求各科平均分

void nopass();//求不及格学生名单

void excellent();//求优等生名单

void fenshuduan();//求各分数段人数 void menu();//菜单

void main(){ int i;menu();read();average();rank();courseaver();for(;1;){ scanf(“%d”,&i);switch(i){ case 1:write();menu();break;

case 2:fenshuduan();menu();break;

case 3:nopass();menu();break;

case 4:excellent();menu();break;case 0:exit(0);break;default:printf(“无效n”);break;} } } void menu(){

printf(“-------------欢迎进入学生成绩管理程序----------n”);printf(“nnn”);

资工(基)10901

唐雪枭

printf(“***********************************************n”);printf(“输入1 输出 学生成绩条 n”);printf(“输入2 输出 各科分数段及各科的平均成绩 n”);printf(“输入3 输出 不及格学生信息 n”);printf(“输入4 输出 优等生名单 n”);printf(“输入0 退出 n”);printf(“***********************************************n”);} void average(){ int i;for(i=0;i

C语言课程设计实习报告

for(i=0;i

资工(基)10901

唐雪枭

void fenshuduan(){

int i;for(i=0;i=90)E[4]++;else if(stu[i].score[0]>=80)E[3]++;else if(stu[i].score[0]>=70)E[2]++;else if(stu[i].score[0]>=60)E[1]++;else E[0]++;}

for(i=0;i=90)math[4]++;else if(stu[i].score[1]>=80)math[3]++;else if(stu[i].score[1]>=70)math[2]++;else if(stu[i].score[1]>=60)math[1]++;else math[0]++;}

for(i=0;i=90)wu[4]++;else if(stu[i].score[2]>=80)wu[3]++;else if(stu[i].score[2]>=70)wu[2]++;else if(stu[i].score[2]>=60)wu[1]++;else wu[0]++;} printf(“n分数段tt英语tt数学tt物理n”);printf(“<60tt%dtt%dtt%dn”,E[0],math[0],wu[0]);printf(“60~69tt%dtt%dtt%dn”,E[1],math[1],wu[1]);printf(“70~79tt%dtt%dtt%dn”,E[2],math[2],wu[2]);printf(“80~89tt%dtt%dtt%dn”,E[3],math[3],wu[3]);printf(“90~100tt%dtt%dtt%dn”,E[4],math[4],wu[4]);printf(“平均成绩t%5.2ftt%5.2ftt%5.2fn”,eaver,mathaver,wuaver);FILE *fp;

C语言课程设计实习报告

if(NULL==(fp=fopen(“c://2.txt”,“w”))){ printf(“cannot open the file”);exit(0);}

fprintf(fp,“序号t姓名t英语t数学t物理t平均分t名次n”);for(i=0;i

fprintf(fp,“分数段tt英语tt数学tt物理n”);fprintf(fp,“<60tt%dtt%dtt%dn”,E[0],math[0],wu[0]);fprintf(fp,“60~69tt%dtt%dtt%dn”,E[1],math[1],wu[1]);fprintf(fp,“70~79tt%dtt%dtt%dn”,E[2],math[2],wu[2]);fprintf(fp,“80~89tt%dtt%dtt%dn”,E[3],math[3],wu[3]);fprintf(fp,“90~100tt%dtt%dtt%dn”,E[4],math[4],wu[4]);fprintf(fp,“平均成绩t%5.2ftt%5.2ftt%5.2fn”,eaver,mathaver,wuaver);fclose(fp);} void nopass(){ FILE *fp;int i;if((fp=fopen(“c://1.txt”,“r”))==NULL){ printf(“cannot open the filen”);exit(0);} for(i=0;i

资工(基)10901

唐雪枭

if(stu[i].score[2]<60)printf(“%dt%st%d物理n”,stu[i].num,stu[i].name,stu[i].score[2]);}} void excellent(){ int i;printf(“nn优等生名单n”);printf(“学号t姓名t英语t数学t物理t平均成绩t名次n”);for(i=0;i90||(stu[i].aver>85&&((stu[i].score[0]=100)||(stu[i].score[1]=100)||(stu[i].score[2]=100)))||(stu[i].aver>85&&((stu[i].score[0]&&stu[i].score[1]>95)||(stu[i].score[1]&&stu[i].score[2]>95)||(stu[i].score[0]&&stu[i].score[2]>95)))){ if(stu[i].mc<=3&&((stu[i].score[0]>60)&&(stu[i].score[1]>60)&&(stu[i].score[2]>60)))printf(“%dt%st%dt%dt%dt%5.2ftt%dn”,stu[i].num,stu[i].name,stu[i].score[0],stu[i].score[1],stu[i].score[2],stu[i].aver,stu[i].mc);} } }

四、调试过程

调试过程可以说是一波三折,首先要说的是关于文件的打开和写入,这两点作为这个程序的最基础,是非常重要的,由于之前并没有过多的接触,有些生疏,有时不注重一些细节地方经常会出现错误。

然后是在函数间的调用有时候十分的混乱,这个地方忘写了,那个地方放错了的情况经常出现。所以说关于函数调用,主函数等之间的关系有点生疏。

关于指针,结构体指针方面的问题,这是一个重点中也是一个难点,在调试过程中系统总是提示定义方面的错误,这个地方我认为是基础学习的不牢固导致的。

在调试过程中,关于分数的类型没有足够的认识,导致开始运行时出现错误,后将文本中的分数小数点去掉后才运行正常。

通过老师的讲解,调试过程是一个基础编程者必须要掌握的内容。经过这两周的反复练习,现在已经能够基本掌握了。

五、程序有待改进的地方

1程序有待改进的的地方还有许多,比如说这次的程序用的都是一些比较简单的语句。没有太多复杂的东西,可以说是优点也可以说是缺点。优点是让人容易看懂,缺点是内容不严密。

C语言课程设计实习报告

2我认为还有许多地方的语句都是重复的,可以对他们进行统一,但是这一点没有想出来。3还有许都地方的字符串也是重复的,这一点可以于主函数中对其进行定义,进而少上许多的多余字。这一点可以改进。

六、本次实习的收获和建议

通过这两周的C语言课程设计实习,在指导老师的讲解和帮助下,我初步理解了整个程序的编写、执行过程,经过自身的体验,明白了许多在C语言编程中经常出现的错误的解决方式,这次实习很好的将我们课堂上学习到的知识与实践相结合,提高了我对C语言相关知识的认识水平,在课设中,经常会出现这样或那样的问题导致程序无法继续执行,这时就需要我们用平和的心态来寻找问题、解决问题,积累经验,进而完善程序。俗话说熟能生巧,相信在更多的练习之后我会更加熟练的掌握C语言,编写出更好的程序。十分感谢王庆老师对我们的帮助和指导。这次实习是一次“知行结合”的好机会,希望以后能够有更多这样的机会。

附录

1、原始数据1.dat 1 陈龙 75 75 46 2 陈志明 85 95 85 3 程晨 75 75 86 4 郭伟 80 95 85 5 郭小锋 90 75 88 6 何军 85 85 86 7 李建奎 85 85 74 8 梁杰 70 85 86 9 梁宇超 85 95 90 10 梁智荣 85 65 85 11 刘辉 80 75 86 12 刘宇 90 75 84 13 楼俊婕 80 45 77 14 宁鹤飞 80 65 78 15 李华娟 80 75 85 15 彭伟杰 60 65 76 16 彭伟强 75 75 75 17 石岩松 75 85 85 18 孙冰冰 60 65 10 19 田筱 75 85 87

2、生成文件2.dat 序号 1 2 3 4 5 6 姓名 英语 数学 物理平均分

75 95 90 85 46 95 86 85 75 86 65.33 19 85

88.33 2 78.67 13 86.67 3 88

84.33 5 85.33 4

名次

陈龙 75 陈志明 程晨 75 郭伟 80 郭小锋 何军 85 11

资工(基)10901

唐雪枭李建奎 85 85 74 81.33 9 8 梁杰 70 85 86 80.33 10 9 梁宇超 85 95 90 90.00 1 10 梁智荣 85 65 85

78.33 14 11 刘辉 80 75 86 80.33 10 12 刘宇 90 75 84 83.00 6 13 楼俊婕 80 45 77 67.33 17 14 宁鹤飞 80 65 78 74.33 16 15 李华娟 80 75 85 80.00 12 15 彭伟杰 60 65 76 67.00 18 16 彭伟强 75 75 75 75.00 15 17 石岩松 75 85 85 81.67 8 18 孙冰冰 60 65 10

45.00 20 19 田筱 75 85 87 82.33 7 分数段

英语 数学 物理<60 0 1 2 60~69 2 4 0 70~79 6 7 5 80~89 10 5 12 90~100 2 3平均成绩 78.50 77.00 77.70

C语言课程设计实习报告

3、运行结果

资工(基)10901

唐雪枭

第三篇:C语言课程设计报告

C语言课程设计报告

级:

10电子本1

号:

10303033122

名:

指导老师:

方文森

完成日期:

温州大学城市学院课程设计

目 录

1、课程设计目的和要求.....................................................................................................2

2、课程设计任务内容.........................................................................................................2

3、详细设计说明.................................................................................................................3

3.1分析.........................................................................................................................3 3.2软件设计.................................................................................................................3 3.3软件调试(对编程中的错误进行记录,并给出你的解决办法).....................3

4、软件使用说明.................................................................................................................4

5、课程设计心得与体会.....................................................................................................4 附录1:参考文献................................................................................................................5 附录2:部分程序清单(带有较详细的注释)................................................................5

温州大学城市学院课程设计

C语言课程设计报告

1、课程设计目的和要求

目的:(1)巩固和加深学生对C语言课程的基本知识的理解和掌握(2)掌握C语言编程和程序调试的基本技能(3)利用C语言进行基本的软件设计(4)掌握书写程序设计说明文档的能力(5)提高运用C语言解决实际问题的能力 要求:(1)分析课程设计题目的要求(2)写出详细设计说明

(3)编写程序代码,调试程序使其能正确运行(4)设计完成的软件要便于操作和使用(5)设计完成后提交课程设计报告

2、课程设计任务内容

1)一个班级有4个学生,共学习5门课程(大学英语、高等数学、C语言程序设计、VB程序设计、大学语文)。要求编写程序完成相应功能。2)

输入并保存]5门课程名称;

3)

输入并保存]4个学生的学号及其[个人相关信息]; 4)

输入并保存]每个学生对应的每门课程成绩; 5)求出每门功课的平均分;

6)找出有两门以上功课不及格的学生,输出他们的学号和全部课程成绩及该学生5门课程的平均成绩;

7)找出平均成绩在90分以上或者全部课程成绩在85分以上的学生,输出他们的学号和全部课程成绩及该学生5门课程的平均成绩;

8)计算每位学生的总分,并按总分进行排名,按由高到低输出他们的学号及总成绩; 9)对前面问题进行优化,即在一维数驵的基础上,考虑采用二维数组、函数及其参数传递的方式来解决相关问题;

10)对前面问题进行优化,在学号的基础上,增加学生的其它个人信息,包括:学号、姓名、年龄、性别,并采用结构体形式加以表示; 11)利用文件实现对输入及分析输出数据的存取操作。

12)参照教材P27页,3-11题引入选择功能,输入功能编号可以实现以上功能(考虑清屏函数,自查)。

温州大学城市学院课程设计

3、详细设计说明

3.1分析

3.2软件设计

开始菜单(功能选择)Key=?Key=1Key=2Key=3Key=4Key=5Key=0Key=99Key=6Key=7Key=8Key=9Key=10写入课程名读取课程名输入学生信息读取学生信息建立了学生信息及课程名称?退出程序读取课程、学生、成绩读取课程成绩输出功课的平均分两门以上功课不及格的学生输出高分的学生总分由高到低排序No保存保存Yes输入课程成绩(提示)必须输入课程名称、学生信息才能建立成绩保存清屏

3.3软件调试(对编程中的错误进行记录,并给出你的解决办法)

取地址。

温州大学城市学院课程设计

4、软件使用说明

1.2.3.4.5.6.7.8.9.10.11.12.[99]读取课程、学生、成绩 [1]输入课程名称.[2]读取课程名称.[3]输入学生信息.[4]读取学生信息.[5]输入课程成绩.[6]读取课程成绩.[7]功课的平均分.[8]两门以上功课不及格的学生 [9]-高分的学生-.[10]学生总分排序.[0]退出应用程序.5、课程设计心得与体会

在大家的共同努力下,忙碌了两个星期,我们顺利完成了对此程序的编译及试运行。在设计程序的过程中,我们了解到要设计一个完整的程序,其中最难的可能就属设计整个程序的框架,其中可能会需要经过很多次的修改与调试,所以必须要有耐心,直至最后设计出自己想要的程序。

另外平时学习c语言的基础也很关键,因为如果平时学得就不怎么样,那么你面对这么一个比较有难度的程序,可能会望而却步,看懂他人的程序都是个难点,更别说让自己去设计。为了解决此类问题,最好就是多向同学,老师请教,查找资料。

设计一个程序的过程就是解决一个实际问题的过程,从解决实际问题的角度,我们可以这样来看:首先要了解这个问题的基本要求,即输入、输出、完成从输入到输出的要求是什么;在次我们必须捋清思路,逐一的解决问题的各个方面,即从输入开始入手,着重考虑如何从输入导出输出,在这个过程中,可确定所需的变量、数组、函数,然后确定处理过程--算法。

感谢这次的课程设计,它使我更加深刻地体会到c语言程序编写过程的严谨与细致,还有就是无论做任何事都要有耐心。当然团队合作也是非常重要的一个环节,这会使你在学习过程中倍感轻松

总的来说,这次程序设计让我获益匪浅,对C语言也有了进一步的认识:C语言功能高、表达能力强、使用灵活方便、目标程序效率高等等。C语言是在国内外广泛使用的一种计算机语言,相信除了以上优点,还有许多我们还未发现,希望能在以后的学习中有更深入的认

温州大学城市学院课程设计

识。

附录1:参考文献

《C语言程序设计与实践教程》

附录2:部分程序清单(带有较详细的注释)

#include #include

#define N 4 #define M 5 #define Debug 1

typedef struct { char SNo[5];char SName[10];}Student;

void ScoreRead(float Score[][M],char FileName[],char FileType[]){ int i,j;FILE *fp;fp=fopen(FileName,FileType);if(fp==NULL){ printf(“Errorn”);exit(0);} else { for(i=0;i

温州大学城市学院课程设计

void ScoreWrite(float Score[][M],char FileName[],char FileType[]){ int i,j;FILE *fp;fp=fopen(FileName,FileType);if(fp==NULL){ printf(“Errorn”);exit(0);} else { for(i=0;i

void CoureseRead(char Cname[][20],char FileName[],char FileType[]){ FILE *fp;int i,j;char ch;fp=fopen(FileName,FileType);if(fp==NULL){ printf(“Errorn”);exit(0);} i=0;j=0;while(1){ ch = fgetc(fp);if(ch==EOF)break;if(ch=='n'){ Cname[i][j]='';i++;j=0;6

温州大学城市学院课程设计

} else { Cname[i][j]=ch;j++;} } #if(Debug==1)for(i=0;i

void CoureseWrite(char Cname[][20],char FileName[],char FileType[]){ FILE *fp;int i,j;fp=fopen(FileName,FileType);if(fp==NULL){ printf(“Errorn”);exit(0);} for(i=0;i

void StuInfoWrite(Student S[],char FileName[],char FileType[]){ int i,j;FILE *fp;fp=fopen(FileName,FileType);if(fp==NULL)7

温州大学城市学院课程设计

{ printf(“Errorn”);exit(0);} else { for(i=0;i

void StuInfoRead(Student S[],char FileName[],char FileType[]){ int i,j;FILE *fp;fp=fopen(FileName,FileType);if(fp==NULL){ printf(“Errorn”);exit(0);} else { for(i=0;i

温州大学城市学院课程设计

Student Stu[N];char Cname[M][20];

while(1){ system(“cls”);printf(“ttt=======学生成绩管理应用程序=======n”);printf(“tttt[99]读取课程、学生、成绩.nn”);printf(“tttt[1]输入课程名称.nn”);printf(“tttt[2]读取课程名称.nn”);printf(“tttt[3]输入学生信息.nn”);printf(“tttt[4]读取学生信息.nn”);printf(“tttt[5]输入课程成绩.nn”);printf(“tttt[6]读取课程成绩.nn”);printf(“tttt[7]功课的平均分.nn”);printf(“tttt[8]两门以上功课不及格的学生.nn”);printf(“tttt[9]-高分的学生-.nn”);printf(“tttt[10]学生总分排序.nn”);printf(“tttt[0]t退出应用程序.nn”);printf(“请选择功能:”);scanf(“%d”,&Key);getchar();printf(“n”);if(Key==99){ CoureseRead(Cname,“D:cname.txt”,“r”);StuInfoRead(Stu,“D:stuinfo.db”,“rb”);ScoreRead(CJ,“d:score.db”,“rb”);} else if(Key==1){ for(i=0;i

//输入学生信息 //读取课程名称

//输入课程名称

温州大学城市学院课程设计

{ scanf(“%stt%s”,Stu[i].SNo,Stu[i].SName);} getchar();StuInfoWrite(Stu,“D:stuinfo.db”,“wb”);} else if(Key==4){ StuInfoRead(Stu,“D:stuinfo.db”,“rb”);} else if(Key==5){

char Qu;scanf(“%c”,&Qu);getchar();if(Qu=='Y' || Qu=='y')printf(“您已经建立了学生信息及课程名称了吗?(Y/N)n”);

//输入课程成绩 //读取学生信息

{ CoureseRead(Cname,“D:cname.txt”,“r”);StuInfoRead(Stu,“D:stuinfo.db”,“rb”);for(i=0;i

else { printf(“请输入Y/N!n”);

//读取课程成绩 } }//else if(Key==5)else if(Key==6){ ScoreRead(CJ,“d:score.db”,“rb”);10

温州大学城市学院课程设计

} else if(Key==7){ ScoreRead(CJ,“d:score.db”,“rb”);CoureseRead(Cname,“D:cname.txt”,“r”);for(j=0;j

for(i=0;i2){ s=s/M;printf(“%st %sn平均成绩:%fn”,Stu[i].SNo,Stu[i].SName,s);for(k=0;k

}

}

} } 11

温州大学城市学院课程设计

} else if(Key==9){ int x,k;float c,s;printf(“平均成绩在90分以上或全部课程成绩在85分以上n”);for(i=0;i=90)){ s=s/M;printf(“%st%st平均成绩:%fn”,Stu[i].SNo,Stu[i].SName,s);for(k=0;k=85){ x++;if(x==M){ s=s/M;printf(“%st%st平均成绩:%fn”,Stu[i].SNo,Stu[i].SName,s);for(k=0;k

}

} } else if(Key==10){ float x[i];12

温州大学城市学院课程设计

char XH[N][3];char temp[3];int num;int imax,k;float t;for(i=0;i=1;i--){ for(k=0;k

else if(Key==0){ break;} getchar();} } 13

第四篇:C语言课程设计报告

C语言课程设计报告

Experiment Designing reporter

课程名称 : C语言课程设计

英文名称 : C Program Experiment Designing

专 业 :

学 号 :

姓 名 :

指导教师 :

日 期: 2011年7月18日 至2011年7月22日

《C语言课程设计》报告

C Program Experiment Designing

课程编号:01200308005

学时: 40学时 适用专业:软件工程专业 授课单位:软件学院

一、C语言课程设计目的及要求

目的:

根据课堂讲授内容,学生做相应的自主练习,消化课堂所讲解的内容;通过调试典型例题或习题积累调试C程序的经验;通过完成辅导教材中的编程题,逐渐培养学生的编程能力、用计算机解决实际问题的能力。

要求:

1. 熟悉Turbo C 的编程环境、主要菜单功能。

2. 通过上机验证运算符、表达式、运算规则、函数使用。3. 熟练使用C语言的典型语句编写简单程序。4. 调试典型例题或习题。5. 提高上机编程能力

二、实验类型

设计类型

三、实验学时

40学时

四、实验设备

微型计算机、WINDOWS98以上版本的操作系统、Turbo C2.0 软件一套

五、C语言课程参考教材:

1.李瑞 C语言程序基础(第二版)清华大学出版社 2.梁旭 C语言课程设计.电子工业出版社

课程设计(报告)任务书

任务及要求:

1.设计(研究)内容和要求

研究内容:C语言课程设计题目相关内容 任务和要求:

(1).学习C语言基础知识,掌握C语言编程和程序调试的基本技能。(2).对指导教师下达的题目进行系统分析。(3).根据分析结果完成系统设计。

(4).编程:在计算机上实现题目的代码实现。(5).完成对该系统的测试和调试。(6).提交课程设计报告。(7).指标: 要求完成课程设计报告3千字以上(约二、三十页).完成若干综合性程序设计题目,每个综合设计题目的语句行数的和在300行语句以上.2.原始依据

了解C语言的基础知识,有一定的语言编程基础,能够熟练运用C语言进行程序设计。通过用C语言完成的题目,提高用C语言解决实际问题的能力。3.参考文献

[1] 黄明等.C语言程序设计辅导教材.大连理工大学出版社,2006 [2] 马靖善等.C语言程序设计.清华大学出版社,2005 [3] 谭浩强.C语言程序设计(第二版).北京:高等教育出版社,2002

目录

C语言课程设计报告................................................................................错误!未定义书签。

1. 输出杨辉三角.............................................................................................................1 1.1 系统分析..............................................................................................................1 1.2 设计说明..............................................................................................................1 1.3 程序运行截图......................................................................................................2 1.4 源程序代码..........................................................................................................2 2 汉诺塔求解方法.............................................................................................................3 2.1 系统分析..............................................................................................................3 2.2 设计说明..............................................................................................................3 2.3 程序运行截图......................................................................................................4 2.4 源程序代码..........................................................................................................4 3 输出200以内的素数.....................................................................................................5 3.1功能说明...............................................................................................................5 3.2 设计说明..............................................................................................................5 3.3 程序运行截图......................................................................................................5 3.4 源程序代码..........................................................................................................6 4 进制转换计算器.............................................................................................................6 4.1功能说明...............................................................................................................6 4.2 设计说明..............................................................................................................6 4.3程序运行截图.......................................................................................................7 4.4 源程序代码..........................................................................................................7 5 一元稀疏多项式.............................................................................................................8 5.1 功能说明..............................................................................................................8 5.2 设计说明..............................................................................................................8 5.3 程序运行截图....................................................................................................10 5.4 源程序代码........................................................................................................11

1. 输出杨辉三角

1.1 系统分析

以等腰直角三角形输出杨辉三角

1.2 设计说明

1、包含头文件

#include

#include

其中,头文件为使用clrscr()。

2、子函数

函数名:int num(i,j)

函数功能:以递归的方式进行计算,用函数代替二维数组

函数参数:int i;int j;

含义:相当于二维数组的a[i][j] 函数流程

Step1:输出最外行,即三角形两直角边的结果都为 1 ;

Step2:讨论其余情况,相当于数组中的

a[i][j] = a[i-1][j-1] + a[i-1][j]。

3、main()函数

1为保证结果完整输出,先进行清屏; ○2输入要打印的行数,由于一行只能显示80个字符,建议不要超过13行; ○3用循环调用函数int num(int i , int j)○

其中循环为三重循环:i 循环控制行打印

j 循环控制列打印

k 循环控制空格打印

每执行一次i 循环输出一个换行符,直角三角形定点放在第36个字符的位置上。

每个数字占6个字符的格。

1.3 程序运行截图

1.4 源程序代码

#include #include

int num(i,j){

int i,j;

if(I == j ||j == 0)return(1);

else return(num(i-1 , j-1)+num(i-1 , j));}

int main(void){

int n,k,i,j;

clrscr();

puts(“input row n:”);

scanf(“%d”,&n);

for(i = 0;i < n;i++)

{

{

for(k = 0;k < 36-3*i;k++)

putchar(' ');

}

{

for(j = 0;j <= i;j++)

printf(“%6d”,num(i , j));

}

puts(“");

}

getch();

return 0; } 汉诺塔求解方法

2.1 系统分析

汉诺塔求解方法

2.2 设计说明

1、包含头文件:

#include #include

其中,#include 为了应用函数toupper

2、子函数

函数名:void move(int n , char a , char b)

函数功能:打印移动的主子编号

函数参数:int n , char a , char b;

含义:n为移动的序数,a为源柱号,b目的柱号 函数流程

Step1:输出盘子移动情况;

Step2:打印换行。

函数名:void hanoi(int n,char a,char b,char c)

函数功能:以游戏规则求解移动盘子的方法

函数参数:int n,char a,char b,char c;

含义:n移动的序数,a为源柱号,b为目的柱号,c为中间柱号

函数流程

Step1:递归调用函数 hanoi(n-1,a,c,b);

Step2:调用函数move(n-1,a,b);

Step3:继续递归调用函数hanoi(n-1,c,b,a);

3、主函数main()1为了使程序可以重复运行,定义了变量ch,当ch == N 时,退出游戏; ○2使用while()循环使游戏重复运行; ○3输入盘子的数目以调整游戏的难度; ○3调用函数hanoi()○

2.3 程序运行截图

2.4 源程序代码

#include ”stdio.h“ #include ”ctype.h“

//应用函数toupper void move(int n,char a,char b)

//n为移动的序数,a为源柱号,b目的柱号*/ {

printf(”Disc%d move from %c to %c;“,(n+1),a,b);

printf(”n“);}

void hanoi(int n,char a,char b,char c){

//n移动的序数,a为源柱号,b为目的柱号,c为中间柱号

if(n>0)

{

hanoi(n-1,a,c,b);

//递归调用

move(n-1,a,b);

hanoi(n-1,c,b,a);

} } main(){

int n;

char ch ='Y';

printf(”Now let us play the game of hanoitowern“);

while(ch == 'Y')

//通用性设计

{

printf(”n Input the number of disc[2-15]:“);

scanf(”%d“,&n);getchar();

printf(”n The orders of moving %d discs from A to B are:n“,n);

hanoi(n,'A','B','C');

//调用函数

printf(”n Continue(Y/N):“);

ch=getchar();

getchar();

ch=toupper(ch);}

return 0;} 3 输出200以内的素数

3.1功能说明

输出200以内的素数

3.2 设计说明

1、宏定义

#define M 200

//范围,表示输出200以内的素数 #define N((M+1)/2)

//奇数的个数

处理流程:

Step1:第一步筛选掉所有的偶数,将剩余的奇数存放在a[N]中; Step2:第二部筛选掉多有可以被整除的数 Step3:将得到的素数10个一行打印。

3.3 程序运行截图

3.4 源程序代码

#include ”stdio.h“ #define M 200

//范围

#define N((M+1)/2)

//奇数的个数 main(){

int i,j,a[N];

a[0]=2;

for(i=1;i

//初始数组实现第一步筛选

a[i]=2*i+1;

for(i=1;i<(N-1);i++)

//第二步筛选

if(a[i]!=0)

for(j=i+1;j

if((a[j]%a[i]==0))

//倍数时置零筛去

a[j]=0;

printf(”n The primer are[2-%d]:n“,M);

for(i=0,j=0;i

//显示得到素数

{

if(a[i]!=0)

{

printf(”%5d“,a[i]);

if((++j)%10==0)

//十个数换行

printf(”n“);

} }

return 0;} 进制转换计算器

4.1功能说明

进行进制转换。

4.2 设计说明

1、处理流程:

Step1:输入原始数值xa,原始权a,已经希望转换的进制b;Step2:逐位取值,将原始数值转换成10进制 Step3:逐位取值,将原始数值转换成b 进制

4.3程序运行截图

4.4 源程序代码

void main()#include ”stdio.h“ main()

{

int a=0,/*原始进制*/ b=8,/*转换进制,默认为八*/

k=1;

/*位权*/

long xa=0,/*原始数值*/

xb=0,/*转换数值*/

x1=0,x2=0;

/*十进制数值*/

printf(”n Input the number and weight a->b:“);

scanf(”%ld%d%d“,&xa,&a,&b);

x1=xa;

while(x1!=0)

/*转换为十进制数*/

{ x2+=(x1%10)*k;

/*逐位取值*/ x1/=10;k*=a;

}

k=1;

x1=x2;

while(x1!=0)

/*转换为b进制数*/

{ xb+=(x1%b)*k;x1/=b;k*=10;

}

printf(”n %ld(%d)=%ld(%d)=%ld(%d)“,xa,a,x2,10,xb,b);

return;} 一元稀疏多项式

5.1 功能说明

求一元稀疏多项式的运算:

1、求两多项式加法;

2、求两多项式减法;

3、求两多项式乘法;

4、求两多项式导数;

5、求两多项式在x=m处的值。

5.2 设计说明

1、链表结点的定义:

typedef struct polyn {

float coef;

//多项式系数

int expn;

//多项式指数

struct polyn * prior,* next;} polyn, *linkpolyn;

2、子函数,多项式的基本运算。函数名:linkpolyn CREATEPOLYN()函数功能:创建多项式链表,在输入的时候进行升序排列 返回值:return head,即建立的多项式头结点 参数:linkpolyn head,含义:链表头结点 处理流程:

Step1:输入第一个结点,且第一个结点自然有序;

Step2:循环输入其余结点,当输入0 0是表示输入结束;

Step3:输入过程中进行升幂排序,用二分法,找到新结点插入点;

Step4:插入新结点;继续循环,直到输入0 0,循环结束,链表建立成功。Step5:返回建立链表头结点,函数结束。

函数名:linkpolyn DERIVATIONPOLYN(linkpolyn L)函数功能:多项式求导

返回值:return(head),即求导多项式的链表头结点

参数:linkpolyn L,含义:把建立好的链表A和B传递给L 处理流程:

Step1:分别用指针指向L的头结点和求导多项式的头结点head;

Step2:用循环逐个对L链表中的结点求导,一次存放在求导多项式中的新结点中; Step3:循环中考虑,当L链表中的结点仅存放一个常数,则跳过该结点,继续遍历下一结点;

Step4:当循环结束,即L中的各项以被求导,返回求导多项式头结点head。

函数名:linkpolyn INITPOLYN()函数功能:链表初始化

返回值:return(head),即求导多项式生成的链表头结点 参数:无参数 处理流程:

Step1:生成一个新的空间作为新结点;

Step2:将新节点的coef域赋0,expn域赋-1,以区分其他节点; Step3:将头结点的前去指针和后即指针置空,并返回头结点。

函数名:void PRINTLIST(linkpolyn head)函数功能:以类数学表达式的形式打印 返回值:无返回值

参数:linkpolyn head,含义:处理过的链表头结点 处理流程:

Step1:讨论是否链表为空,若为空,则输出0;

Step2:若链表不为空,则输出第一个值,第一个值不用输出符号; Step3:用循环依次输出其余各项,附加符号输出;

函数名:linkpolyn ADDPOLYN(linkpolyn A , linkpolyn B)函数功能:加法运算

返回值:return ptr,即和多项式的头结点

参数:linkpolyn A , linkpolyn B,含义:创建的链表A和B 处理流程:

Step1:分别以两个指针pa和pb遍历链表A和B;

Step2:当A和B两链表都为遍历完毕时,进行加法运算,分配新的空间存放和多项式,并用二分法进行升幂排序; Step3:当A遍历完毕而B未遍历完毕,将B其余各项拷贝到

和多项式链表中;

Step4:当B遍历完毕而A未遍历完毕,将A其余各项拷贝到

和多项式链表中;

函数名:linkpolyn SUBTRACTPOLYN(linkpolyn A , linkpolyn B)函数功能:计算A-B的值

返回值:return ptr,即差多项式的头结点

参数:linkpolyn A , linkpolyn B,含义:创建的链表A和B 处理流程:

Step1:分别以两个指针pa和pb遍历链表A和B;

Step2:当A和B两链表都为遍历完毕时,进行减法运算,分配新的空间存放和多项式,并用二分法进行升幂排序;

Step3:当A遍历完毕而B未遍历完毕,将B其余各项拷贝到

和多项式链表中;

Step4:当B遍历完毕而A未遍历完毕,将A其余各项拷贝到

差多项式链表中; Step5:返回多项式头结点

函数名:float WORK(float x,int e)函数功能:求x的幂

返回值:return t,即计算幂结果

参数:float x,int e,含义:x为输入的x的值,e为x的指数 处理流程:

Step1:分别讨论正指数与负指数的的情况; Step2:若e>0,则累乘e次x; Step3:若e<0,则累除e次x;; Step4:将所求结果返回;

3、主函数main()Step1:依次调用函数进行运算操作; Step2:调用函数创建链表; Step3:调用函数进行运算;

5.3 程序运行截图

5.4 源程序代码

#include ”stdio.h“ #include #include ”math.h“ #define FZ 1e-6

typedef struct polyn { float coef;//多项式系数 int expn;//多项式指数 struct polyn * prior,* next;} polyn, *linkpolyn;

void DESTROYPOLYN(linkpolyn head){ //销毁链表 linkpolyn s,p;p=head;

while(p->next!= NULL){ s = p;

p = p->next;

free(s);} } //DESTROYPOLYN

linkpolyn INITPOLYN(){ //链表初始化

struct polyn * head;head=(linkpolyn)malloc(sizeof(polyn));head->coef=0.0;//假设头结点系数为0 head->expn=-1;//假设头结点指数为-1 head->next=NULL;head->prior=NULL;return head;} //INITPOLYN

void INSERTPOLYN(linkpolyn p,linkpolyn s){ //将结点s插入到p之后

if(NULL!= p->next){

s->next = p->next;

s->next->prior = s;} s->prior = p;p->next = s;

} //INSERPOLYN

linkpolyn CREATEPOLYN(){ //创建多项式链表,在输入的时候进行升序排列 linkpolyn head,s,p,m,r;

int num = 1;//计数器

head = INITPOLYN();//初始化链表 head r = head;//设置为指针

s=(linkpolyn)malloc(sizeof(polyn));

/******************************************/ printf(”请输入第%d项系数和指数:“,num);/**输入第一个结点,并且第一个结点自然有序**/ scanf(”%f%d“,&s->coef,&s->expn);/******************************************/ r->next = s;s->prior = r;r = r->next;//r指向尾结点

r->next = NULL;p = r;//p为s的插入点前一个结点

m = r;//m为拍完结点中间的节点,二分法排序

while(++num)//while # 当将 s->coef 与 s->expn 都赋值为0的时候,认为输入结束

{ s =(linkpolyn)malloc(sizeof(polyn));printf(”请输入第%d项系数和指数:“,num);scanf(”%f%d“,&s->coef,&s->expn);

if((fabs(s->coef)<= FZ)&&(s->expn == 0))//if @

{ free(s);

break;

} //else @ else //else @

{ if(s->expn <= p->expn)//if #

{ while(p->prior!= NULL && p->expn > s->expn)

p = p->prior;//p向前遍历链表,找到插入点

if(s->expn == p->expn)

{

p->coef += s->coef;

free(s);

r=r;

}

else

{

INSERTPOLYN(p,s);//在p后面插入结点s

m = m->prior;

p = m;

}

} // if #

else //else #

{

while(p->next!= NULL && p->next->expn < s->expn)

p = p->next;//p向后遍历链表,找到插入点

if(s->expn == p->expn)

{

p->coef += s->coef;

free(s);

}

else

{

INSERTPOLYN(p,s);

if(s->expn > r->expn)

{ r = r->next;

r->next = NULL;

}

}

} //else #

} //else @ } //while # return head;} //CREATEPOLYN

void PRINTPOLYN(linkpolyn head){ //以类数学表达式的形式打印 linkpolyn p;

p = head->next;if(p == NULL)//链表为空

puts(”0“);else //else @ { //链表不为空,输出第一个结点的值

if(p->expn == 0)printf(”%f“,p->coef);//指数为0时不输出x else

{ if(p->coef==1)printf(”x^%d“,p->expn);/**************************/ else if(p->coef ==-1)printf(”-x^%d“,p->expn);/**第一项前不需要输出符号**/ else printf(”%gx^%d“,p->coef,p->expn);/**************************/

} p = p->next;while(p!= NULL)

{ //依次输出以后各节点 if(p->coef>0)

{ //当系数为正时,讨论输出符号问题

if(p->expn == 0)printf(”+%g“,p->coef);else if(p->coef == 1)printf(”+x^%d“,p->expn);else printf(”+%gx^%d“,p->coef,p->expn);

} else

{ //当系数为负时,讨论输出符号问题

if(p->expn == 0)printf(”%g“,p->coef);else if(p->coef ==-1)printf(”-x^%d“,p->expn);else printf(”%gx^%d“,p->coef,p->expn);

} p = p->next;

} } //else @ } //PRINTPOLYN

linkpolyn ADDPOLYN(linkpolyn A , linkpolyn B){ //加法

linkpolyn qa,qb,q,ptr;float x;qa = A->next;qb = B->next;q = INITPOLYN();//和多项式头结点初始化

ptr = q;//ptr指向和多项式头结点

while((qa!= NULL)&&(qb!= NULL)){ //升幂求和

if(qa->expn == qb->expn)//指数相同的项

{ x = qa->coef + qb->coef;//系数相加

if(x!= 0)//求得系数非0

{ q->next =(linkpolyn)malloc(sizeof(polyn));//

q = q->next;

q->coef = x;

q->expn = qa->expn;

}

生成和多项式的节结点

qa = qa->next;

qb = qb->next;

}

else //指数不同

{

q->next =(linkpolyn)malloc(sizeof(polyn));

q = q->next;

if(qa->expn > qb->expn)//A多项式当前指数大于B

{ q->coef = qb->coef;//B多项式当前的值复制到和多项式中

q->expn = qb->expn;

qb = qb->next;

}

else //B多项式当前指数大于A

{ q->coef = qa->coef;//A多项式当前的值复制到和多项式中

q->expn = qa->expn;

qa = qa->next;

}

} } //A或B中有一个多项式已经处理完毕

while(qa!= NULL)//A未处理完毕,将其余各项复制到和多项式中

{ q->next =(linkpolyn)malloc(sizeof(polyn));q = q->next;

q->coef = qa->coef;

q->expn = qa->expn;

qa = qa->next;} while(qb!= NULL)//B未处理完毕,将其余各项复制到和多项式中

{ q->next =(linkpolyn)malloc(sizeof(polyn));q = q->next;

q->coef = qb->coef;

q->expn = qb->expn;

qb = qb->next;} q->next = NULL;//令和多项式最末的节点指向头结点

return ptr;//返回多项式头指针 } //LINKPOLYN

linkpolyn SUBTRACTPOLYN(linkpolyn A , linkpolyn B){ //减法

linkpolyn qa,qb,q,ptr;float x;qa = A->next;qb = B->next;q = INITPOLYN();//和多项式头结点初始化

ptr = q;//ptr指向和多项式头结点

while((qa!= NULL)&&(qb!= NULL)){ //升幂求差

if(qa->expn == qb->expn)//指数相同的项

{ x = qa->coef-qb->coef;//多项式A的系数减去B的系数

if(x!= 0)//求得系数非0

{ q->next =(linkpolyn)malloc(sizeof(polyn));//生成和多项式的节结点

q = q->next;

q->coef = x;

q->expn = qa->expn;

}

qa = qa->next;

qb = qb->next;

}

else //指数不同

{

q->next =(linkpolyn)malloc(sizeof(polyn));

q=q->next;

if(qa->expn > qb->expn)//A多项式当前指数大于B

{ q->coef =-(qb->coef);//B多项式当前的值复制到和多项式中

q->expn = qb->expn;

qb = qb->next;

}

else //B多项式当前指数大于A

{ q->coef = qa->coef;//A多项式当前的值复制到和多项式中

q->expn = qa->expn;

qa = qa->next;

}

} } //A或B中有一个多项式已经处理完毕

while(qa!= NULL)//A未处理完毕,将其余各项复制到和多项式中

{ q->next =(linkpolyn)malloc(sizeof(polyn));q = q->next;

q->coef = qa->coef;

q->expn = qa->expn;

qa = qa->next;} while(qb!= NULL)//B未处理完毕,将其余各项复制到和多项式中

{ q->next =(linkpolyn)malloc(sizeof(polyn));q = q->next;

q->coef =-(qb->coef);

q->expn = qb->expn;

qb = qb->next;} q->next = NULL;//令和多项式最末的节点指向头结点

return ptr;//返回多项式头指针 } //SUBTRACTPOLYN

linkpolyn MULTIPLYPOLYN(linkpolyn A,linkpolyn B){ //乘法

linkpolyn pa,pb,s,head,m,r,p;pa = A->next;pb = B->next;head = INITPOLYN();r = head;

s=(linkpolyn)malloc(sizeof(polyn));s->coef = pa->coef * pb->coef;//计算第一个结点,并且第一个结点自然有序

s->expn = pa->expn + pb->expn;r->next = s;s->prior = r;r =r->next;r->next = NULL;p=r;//p为插入点前一结点

m=r;//m指向排完结点中间节点

pb=pb->next;// 第一个乘积处理完毕

for(pa= A->next;pa!= NULL;pa=pa->next)//for pa 处理其余乘积

{ //用A的第一个结点分别与B的其余结点相乘

if(pa == A->next)

pb = B->next->next;

else

pb = B->next;

for(;pb!= NULL;pb = pb->next)//for pb

{

s =(linkpolyn)malloc(sizeof(polyn));s->coef = pa->coef * pb->coef;

s->expn = pa->expn + pb->expn;if(s->expn <= p->expn)//if #

{ while(p->prior!=NULL && p->expn > s->expn)p=p->prior;//p向前遍历链表,找到插入点

if(s->expn==p->expn)

{

p->coef+=s->coef;

free(s);

}

else

{

INSERTPOLYN(p,s);//在p后面插入结点s

m=m->prior;

p=m;

}

} // if #

else //else #

{ while(p->next!=NULL && p->next->expn < s->expn)

p=p->next;//p向前遍历链表,找到插入点

if(s->expn==p->expn)

{

p->coef+=s->coef;

free(s);

}

else

{

INSERTPOLYN(p,s);

if(s->expn > r->expn)

{ r=r->next;

r->next=NULL;

}

}

} //else #

} //for pb } //for pa return head;} //MULTIPLYPOLYN

linkpolyn DERIVATIONPOLYN(linkpolyn L){ //多项式求导

linkpolyn head,p,s,r;head = INITPOLYN();//head为求导多项式头结点 r = head;p = L->next;while(p!= NULL){ if(p->expn == 0)

{ p = p->next;continue;} s =(linkpolyn)malloc(sizeof(polyn));s->coef = p->coef * p->expn;s->expn = p->expn-1;s->prior = r;

r->next = s;

r = r->next;

r->next = NULL;

p = p->next;} return(head);} //DERIVATIONPOLYN

float WORK(float x,int e){ //求x的幂 float t = 1;if(e>0){ while(e)

{ t *= x;e--;} } if(e<0){ while(e)

{ t *= 1/x;e++;} }

return(t);} //WORK

float CALCULATEPOLYN(linkpolyn head,float x){ //计算多项式在x处的值 float t = 0;linkpolyn p;p = head->next;while(p){ t = t +((p->coef)*(WORK(x,p->expn)));p = p->next;} return(t);} //CALCULATEPOLYN

int main(void){ linkpolyn A, B,addp,decp,mulp,derp1,derp2;int i;float x;start: system(”cls“);printf(”一元稀疏多项式计算nn“);printf(”1.建立多项式n“);printf(”2.多项式加法n“);printf(”3.多项式减法n“);printf(”4.多项式乘法n“);printf(”5.计算多项式在x处的值n“);printf(”6.对多项式求导n“);printf(”7.清空数据n“);printf(”8.关闭计算器n“);printf(”请输入选项(1~7):“);scanf(”%d“,&i);switch(i){ case(1): system(”cls“);printf(”建立多项式nn“);printf(”建立多项式A,当输入0 0 时表示出入完毕n“);A = CREATEPOLYN();printf(”建立多项式成功n“);printf(”建立多项式B,当输入0 0 时表示出入完毕n“);B = CREATEPOLYN();printf(”建立多项式成功n“);printf(”多项式A:“);PRINTPOLYN(A);printf(”n“);printf(”多项式B:“);PRINTPOLYN(B);

printf(”nn输入回车返回上一级“);getchar();getchar();goto start;case(2): system(”cls“);printf(”多项式加法nn“);printf(”多项式A:“);PRINTPOLYN(A);printf(”n“);printf(”多项式B:“);PRINTPOLYN(B);printf(”n“);addp = ADDPOLYN(A,B);printf(”多项式A+B:“);PRINTPOLYN(addp);printf(”n“);printf(”nn输入回车返回上一级“);getchar();getchar();goto start;case(3): system(”cls“);printf(”多项式减法nn“);printf(”多项式B:“);PRINTPOLYN(A);printf(”n“);printf(”多项式B:“);PRINTPOLYN(B);printf(”n“);decp = SUBTRACTPOLYN(A,B);printf(”多项式A-B:“);PRINTPOLYN(decp);printf(”n“);printf(”nn输入回车返回上一级“);getchar();getchar();goto start;case(4): system(”cls“);printf(”多项式乘法nn“);printf(”多项式A:“);PRINTPOLYN(A);printf(”n“);printf(”多项式B:“);PRINTPOLYN(B);printf(”n“);mulp = MULTIPLYPOLYN(A,B);printf(”多项式AB:“);PRINTPOLYN(mulp);printf(”n“);printf(”nn输入回车返回上一级“);

getchar();getchar();goto start;case(5): system(”cls“);printf(”计算多项式在x处的值n“);printf(”请输入x的值:“);scanf(”%f“,&x);printf(”n多项式A:“);PRINTPOLYN(A);printf(”n值为:%f“,CALCULATEPOLYN(A,x));printf(”n“);printf(”多项式B:“);PRINTPOLYN(B);printf(”n值为:%f“,CALCULATEPOLYN(B,x));printf(”nn输入回车返回上一级“);getchar();getchar();goto start;case(6): system(”cls“);printf(”多项式求导n“);printf(”多项式A:“);PRINTPOLYN(A);printf(”n“);printf(”多项式B:“);PRINTPOLYN(B);printf(”n“);derp1 = DERIVATIONPOLYN(A);printf(”求导后A':“);PRINTPOLYN(derp1);printf(”n“);derp2 = DERIVATIONPOLYN(B);puts(”求导后B':“);PRINTPOLYN(derp2);printf(”nn输入回车返回上一级“);getchar();getchar();goto start;case(7): system(”cls“);DESTROYPOLYN(A);DESTROYPOLYN(B);DESTROYPOLYN(addp);DESTROYPOLYN(decp);DESTROYPOLYN(mulp);DESTROYPOLYN(derp1);DESTROYPOLYN(derp2);printf(”已清空所有数据n“);printf(”nn输入回车返回上一级“);getchar();getchar();

goto start;case(8): printf(”退出");} return(0);}

第五篇:C语言课程设计报告(参考)

C语言课程设计报告

专 业:网络工程 学 号:11102101 姓 名:步乾豪 提交日期:2012-6-21

C语言课程设计报告

【设计目的】 1.教学目的

本课程设计是学生学习完《C语言程序设计》课程后,进行的一次全面的综合训练,通过课程设计,更好地掌握使用C语言进行程序设计的方法,加深对C语言特点和使用C语言进行程序设计开发过程的理解,加强动手能力。其主要目的是:

(1)进一步培养学生结构化程序设计的思想,加深对高级语言基本语言要素和控制结构的理解;

(2)针对C语言中的重点和难点内容进行训练,独立完成有一定工作量的程序设计任务,同时强调好的程序设计风格。

(3)掌握C语言的编程技巧和上机调试程序的方法。(4)掌握程序设计的常用算法。2.教学要求

(1)要求从所给题目中任选若干个,每个学生必须独立完成课程设计,不能互相抄袭。(2)设计完成后,对所完成的工作进行答辩。(3)要求写出一份详细的课程设计报告。

(4)程序设计题目,须提交相应的程序,并需提供加注释的源程序,能正常运行。……………………………………..【设计内容】

学生信息管理系统 程序说明:

本程序属于非数值计算型算法设计,学生需要设计出学生管理系统所需要的基本功能,并设计简单的界面(无需图形化)。本程序主要考察对自定义函数的熟悉程度,本程序中主要使用到的是数组(链表)的相关操作,包括数组(链表)的输入、输出、查找、插入、删除等操作,需要对数组(链表)有比较深入的掌握。

设计要求:

(1)通过提示菜单选择可以进行的操作。

(2)将学生的信息存入文件中,并命名为StudentInfo.txt。(3)在本系统中可以进行管理系统包含的基本操作,其中包括

a)查看所有学生的信息

b)输入一个学生的学号,从当前学生中进行查找,如果找到则显示该学生的相关信息,如果没有找到则给出提示信息

c)添加一个学生的基本信息,通过输入学号,首先查找是否存在该学号的学生,如果存在则提示重新输入,否则将该学生按照顺序插入到相应位置

d)删除一个学生的基本信息,通过输入学号,首先查找是否存在该学号的学生,如果存在则将该学生删除,否则给出提示信息,提示该学生不存在

(4)学生基本信息包括学号、姓名、性别和专业这些简单信息

C语言课程设计报告

(5)学生信息文件中每一行存放一个学生的信息 ………………………………….【实验环境】 1.硬件环境

开发硬件:Thinkpad E520计算机

因特尔酷睿I5处理器,8GB运存,1GB独立显卡,500G硬盘存储,2.软件环境

开发环境:Windows 7旗舰版操作系统

开发软件:Microsoft Visual 6.0 C++软件

【设计中使用函数说明】

定义并使用的文件: void scanproduct()

【测试结果】

1)创建链表、插入新信息、删除信息、显示信息、修改信息。

2)测试数据

【设计总结】

一.对该设计题目有何更完善的方案

1、对自己完成程序进行自我评价

完成了课程设计的基本要求,同时在此基础上进行了一些创新,使用了多文件,使程序看起来更清晰更有条理。但由于能力有限,以及对C++的认识不深,其中还有不够完善合理的地方。

2、对课题提出更完善的方案

增加按照成绩对链表进行排序的功能,使学生信息能够按照成绩的高低进行显示,能够更清晰地显示学生的学习情况。二.收获及心得体会

1、通过本次课程设计,自己在哪些方面的能力有所提高

加深了对利用C++语言进行程序设计的理解,提高了对函数的运用能力,提高了软件系统分析能力和使用多文件、归纳总结的能力。

2、收获和心得体会

通过自己对单项链表的学习,熟悉了链表的建立、插入、删除等操作方法。通过这次课程设计使我明白了自学的重要性,有了一些自学的学习方法和技巧,并且要积极的与其他同学共同讨论,在讨论中才能找到自己认识的不足,改正自己的错误。【参考文献】 书籍:

1.《C语言程序设计第四版(谭浩强)》 2.《C语言程序设计课程上机指导》 3.《C语言程序设计第三版》

C语言课程设计报告

网站推荐:

http://(TC所有函数功能及使用查询)http://www.xiexiebang.com/(编程爱好者:里面有各种编程资料)

【源程序清单】 系统设计与分析

2.1.1第一模块界面及实现代码 其对应的函数如下: int main(){

int i;wenbenload();do { system(“cls”);printf(“nnnnnn”);printf(“***************************欢迎使用商品订购系统*******************************n”);printf(“ 作者: 网络11102101 步乾豪n”);

printf(“ ┏━━━━━━━━━━━━━━━━━━━┓n”);printf(“ ┃ 1.浏览商品信息 ┃n”);printf(“ ┃ 2.订购商品 ┃n”);printf(“ ┃ 3.订单查询 ┃n”);printf(“ ┃ 4.搜索商品 ┃n”);printf(“ ┃ 5.管理菜单 ┃n”);printf(“ ┃ 0.退出系统 ┃n”);printf(“ ┗━━━━━━━━━━━━━━━━━━━┛n”);printf(“********************************************************************************n”);

printf(“nntt请输入你的操作(0~5): ”);

scanf(“%d”,&i);switch(i){ case 1: system(“cls”);scanproduct();3

C语言课程设计报告

n“);

break;case 2:

system(”cls“);dinggou();break;

case 3: system(”cls“);

lookdinggou();break;searchproduct();break;case 4: case 5: secondmain();break;

case 0: //退出系统的界面

system(”cls“);printf(”nnnnnnnn“);printf(”nnttt欢迎使用本系统nnnnnttt欢迎再次使用

exit(0);//exit用于随时结束程序

}while(1);return 0;

} } 其中的wenbenload()用于从文本中导入商品信息

2.1.2 第二模块的界面及实现代码

如果选择的操作是主界面的1时,而产品文件为建立时会显示下图:

图2.3第二模块界面图

该程序的实现是通过以下代码实现的: void scanproduct(){

int i;system(“cls”);printf(“ttttt商品信息列表n”);for(i = 0;i < inumber;i++)4

C语言课程设计报告

} {

} printf(“nnnnnnttt”);printf(“返回主菜单n”);printf(“ttt”);system(“pause”);return;printf(“名称 : %sn”,a[i].name);printf(“货号 : %dn”,a[i].number);printf(“厂家 : %sn”,a[i].vender);printf(“产地 : %sn”,a[i].filed);printf(“存量 : %dn”,a[i].stock);printf(“单价 : %.2lfnnn”,a[i].unvalent);2.1.3 第三模块的实现及代码 该程序实现代码如下: void dinggou(){ char ch;int i, j, t, c = 1;int n = 1;int m = 0;

do {

switch(n){ case 1: system(“cls”);

printf(“tttt商品信息列表n”);//显示商品的名称、货号信息,以便于订购 printf(“名称t 货号t 库存n”);for(i = 0;i < inumber;i++){

printf(“%st %dt %dnnn”,a[i].name,a[i].number,a[i].stock);

C语言课程设计报告

} printf(“nnn”);printf(“tttt商品订单n”);printf(“nttt请输入你的第%d个订单信息:n”,m + 1);

printf(“nttt货号:”);

fflush(stdin);

scanf(“%d”,&b[ibuy].bgname);

//检测是否含有此商品

j = 1;

for(i = 0;i < inumber;i++)

{

if(a[i].number == b[ibuy].bgname)

{

j = 0;

t = i;

}

}

//若有商品继续购买项目

if(j == 0)

{

printf(“nttt订购量:”);

fflush(stdin);

scanf(“%d”,&b[ibuy].bmany);

if(a[t].stock >= b[ibuy].bmany){

a[t].stock = a[t].stock-b[ibuy].bmany;//买后商品的库存计算

printf(“nttt日期时间:”);

fflush(stdin);

scanf(“%d”,&b[ibuy].btime);

printf(“nttt客户名:”);

fflush(stdin);

gets(b[ibuy].bname);

printf(“nttt客户地址:”);

fflush(stdin);

gets(b[ibuy].baddress);

printf(“nttt客户号:”);

b[ibuy].bnumber = bgnumber;

printf(“%dn”,b[ibuy].bnumber);

bgnumber++;

ibuy++;

m++;6

顾客购C语言课程设计报告

printf(“nnntttt”);

system(“pause”);} else { printf(“nnttt订购数目超出库存n”);

printf(“ttt”);

system(“pause”);

} } //若没有商品的提示及操作

else {

printf(“nnttt查无此货n”);

printf(“ttt”);

system(“pause”);}

case 2: printf(“是否继续输入订购?(Y/N)”);fflush(stdin);scanf(“%c”,&ch);if(ch == 'N' || ch == 'n'){

c = 0;

break;} else if(ch == 'Y' || ch == 'y'){

c = 0;

n = 1;

break;} else if(ch!= 'n' || ch!= 'N' || ch!= 'Y' || ch!= 'y'){

n = 0;

c = 1;

break;} case 0:

C语言课程设计报告

} if(c == 1){ } n = 2;

}while(ch!= 'n' && ch!= 'N');system(“cls”);

return;} 2.1.4 第四模块的实现及代码 该程序实现代码如下: void lookdinggou(){ int i;system(“cls”);printf(“ttttt订单列表n”);for(i = 0;i < ibuy;i++){

printf(“货号 : %dn”,b[i].bgname);printf(“订购量 : %dn”,b[i].bmany);printf(“日期时间 : %dn”,b[i].btime);printf(“客户名 : %sn”,b[i].bname);printf(“客户地址 : %sn”,b[i].baddress);printf(“客户号 : %dnnn”,b[i].bnumber);

} printf(“nnnnnnttt”);printf(“返回主菜单n”);printf(“ttt”);system(“pause”);return;} 该代码中用到了指针,并用到了链表的建立和删除,当然也涉及到了结构体。2.1.5 第五模块的实现及代码 通过以下代码实现: void searchproduct(){

int i;int j;char ch;int n = 1;do

C语言课程设计报告

{

switch(n){ case 1: system(“cls”);

printf(“tttt商品列表n”);//显示商品的名称、货号信息,以便于下部的删除 for(i = 0;i < inumber;i++){

} //商品的搜索

printf(“nnntttt请输入你要搜索商品的ID:”);scanf(“%d”,&j);if(0<=j&&j<=inumber)printf(“名称 : %sn”,a[i].name);printf(“ID : %dn”,i);printf(“库存 : %dnnn”,a[i].stock);

{ printf(“名称 : %sn”,a[j].name);printf(“货号 : %dn”,a[j].number);printf(“厂家 : %sn”,a[j].vender);printf(“产地 : %sn”,a[j].filed);printf(“存量 : %dn”,a[j].stock);printf(“单价 : %.2lfnnn”,a[j].unvalent);}

case 2:

} printf(“是否继续搜索商品?(Y/N)”);fflush(stdin);scanf(“%c”,&ch);if(ch == 'N'|| ch == 'n'){ } if(ch ==' Y'|| ch == 'y'){

} n = 1;break;break;9

C语言课程设计报告

} }while(ch!= 'n' && ch!= 'N');

printf(“nnnnnnttt”);printf(“返回主菜单!n”);printf(“ttt”);system(“pause”);return;2.1.6 第六模块的实现及代码 该代码如下: void secondmain(){

int i;

do {

system(“cls”);printf(“nnnnnnn”);

单printf(“******************************************************************nn”);n“);n”);n“);n”);n“);

printf(” ┏━━━━━━━━━━━━━━━━━━━┓printf(“ ┃ 1.输入全部商品 ┃printf(” ┃ 2.增加商品 ┃printf(“ ┃ 3.删除商品 ┃printf(” ┃ 4.储存商品 ┃printf(“ ┃ 5.储存订单 ┃

C语言课程设计报告

n”);n“);printf(” ┗━━━━━━━━━━━━━━━━━━━┛printf(“ ┃ 0.返回上一级 ┃nnn”);printf(“********************************************************************************nnnnn”);

printf(“nntt请输入你所要选择的功能(0~5): ”);

scanf(“%d”,&i);

switch(i){

case 1:

system(“cls”);jianpanload();break;

case 2:

system(“cls”);addproduct();break;case 3:

system(“cls”);deleteproduct();break;

case 4:

system(“cls”);

C语言课程设计报告

saveproduct();break;case 5:

system(“cls”);savedinggou();break;

} case 0:

system(“cls”);

return;

}while(1);

printf(“tttt”);system(“pause”);system(“cls”);return;}该代码用于商品信息文件的建立生成,存储商品信息和订单。

2.2 软件的数据(结构)设计

先定义全局变量用于控制商品数量和订单数量如下: #include #include #include #include #include

int bgnumber = 023;//客户号

int inumber = 0;//商品量的统计 int ibuy = 0;//订单的统计

C语言课程设计报告

void secondmain();

//管理维护子菜单 void jianpanload();//输入商品 void scanproduct();//浏览商品 void searchproduct();//搜索商品 void dinggou();//订购商品 void lookdinggou();//查询订单 void addproduct();//增加商品 void deleteproduct();//删除商品 void saveproduct();//保存商品 void savedinggou();//保存订单 void wenbenload();//从文本导入商品

struct product {

char name[30];int number;char vender[30];char filed[100];int stock;

double unvalent;

//商品名 //货号 //厂家 //产地 //存量 //单价

};struct product a[100];

struct dinggou {

int bgname;//货号 int bmany;

int btime;

char bname[100];

//订购量 //日期时间 //客户名

char baddress[100];//客户地址 int bnumber;//客户号

};struct dinggou b[100];

下载C语言课程设计实习报告word格式文档
下载C语言课程设计实习报告.doc
将本文档下载到自己电脑,方便修改和收藏,请勿使用迅雷等下载。
点此处下载文档

文档为doc格式


声明:本文内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:645879355@qq.com 进行举报,并提供相关证据,工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。

相关范文推荐

    C语言课程设计报告

    目录 1前言 .............................................................. 1 2正文 .............................................................. 1 2.1设计目的......

    C语言课程设计报告

    C语言课程设计报告 1. 实验题目:职员信息管理系统 2. 数据结构:整型int,字符型char,长整型long,结构体及结构体数组 3. 源代码 : #include"stdio.h" #include"string.h" #defin......

    C语言课程设计报告

    C语言课程设计报告--学生成绩管理系 C语言课程设计报告: 学生成绩管理系统 系统需求 一、 当前学生信息:通过结构体struct student 来保存学生的姓名,学号,性别,语文,数学,英语和......

    课程设计实习报告(范文)

    课 程 设 计 报 告 级:计算机网络121号:201203020102 设计人:马琛行班班学 专业:计算机网络专业 指导教师:韩俊 课程设计报告 一、实习目的 让学生了解网站的制作流程和基本技......

    C语言课程设计停车场报告

    C语言上机实习报告 指导老师:吴杰 学生姓名:刘超 班级序号:02305231 学生证号:20051004279 一.题目要求 设有一个可以停放N辆汽车的狭长停车场,它只有1个大门可以供车辆进出。车......

    课程设计报告 C语言[推荐阅读]

    课 程 报 告 课 程 名 称: 专 业 班 级 : 学 生 姓 名 : 学 号 : 程序设计实践 ****** 20104683**** 任 课 教 师 : 学 2010期 :2010-2011 学年第二学期 课程报告任务书 课程报告......

    C语言课程设计报告总结

    课程设计是培养学生综合运用所学知识 ,发现,提出,分析和解决实际问题,锻炼实践能力的重要环节,是对我们的实际工作能力的具体训练和考察过程.随着科学技术发展的日新月异,当......

    五子棋JAVA语言课程设计报告

    《Java语言程序设计》 课程设计报告 学 院: 信息科学技术学院 班 级: 软件技术2班 姓 名: 王更新 学 号: 1108900505 指导教师: 郭韶升 课设时间: 2014-03-17 至2014-03-26 二O......