c语言编写问题

作者&投稿:琴左 (若有异议请与网页底部的电邮联系)
在C语言编程中应该注意哪些问题~

1.先学习C语言的基础知识。现在正在学C语言的在校学生可以直接进入第2步学习。
2.按照《C语言程序设计入门学习六步曲》进行上机练习。
3.在上机练习时要养成良好的编程风格。点击查看C语言的编程风格

4.积极参加C、C++兴趣小组,养成和老师与同学交流习惯,从而相互收益。有时别人不经意的一句话可能使你茅塞顿开--“一句话点醒梦中人”。

5.及时总结自己的学习经验,养成写C语言日记的习惯。软件有编程日记功能。

6.从网上或教材上找一个自己感兴趣的题目(选题时根据自己的能力,可先易后难,培养自己的成就感,如果有了成就感,即使再苦再累还是感觉C语言学习是一件快乐的事,同学们喜欢打游戏,经常通宵达旦地玩游戏也乐而不疲就是这个道理)进行实战训练,提高自己的C语言综合应用能力。

7. 由于C语言灵活、强大,初学者要全面地掌握它是不可能的,因此在学习C语言的过程中,不要在细枝末节上浪费精力(比如++、--用于表达式的计算,实际上是没有意义的),但一定要熟练掌握C语言的流程控制语句、数组、函数、指针等基础知识的应用,为学习面向对象程序设计打下坚实的基础。如果这些知识你学不好,要后续学习好C++、可视化的程序设计Visual C++或C++Builder就像空中楼阁,是不现实的。
C语言程序设计入门学习六步曲



笔者在从事教学的过程中,听到同学抱怨最多的一句话是:老师,上课我也能听懂,书上的例题也能看明白,可是到自己动手做编程时,却不知道如何下手。发生这种现象的原因有三个:

一、所谓的看懂听明白,只是很肤浅的语法知识,而我们编写的程序或软件是要根据要解决问题的实际需要控制程序的流程,如果你没有深刻地理解C语言的语句的执行过程(或流程),你怎么会编写程序解决这些实际问题呢?

二、用C语言编程解决实际问题,所需要的不仅仅是C语言的编程知识,还需要相关的专业知识。例如,如果你不知道长方形的面积公式,即使C语言学得再好你也编不出求长方形的面积的程序来。

三、C语言程序设计是一门实践性很强的课程,“纸上谈兵”式的光学不练是学不好C语言的。例如,大家都看过精彩自行车杂技表演,假如,你从来没有骑过自行车,光听教练讲解相关的知识、规则、技巧,不要说上台表演、就是上路你恐怕都不行。

出现问题原因清楚了,那么如何学习呢?请你看【C语言学习六步曲】

在程序开发的过程中,上机调试程序是一个不可缺少的重要环节。“三分编程七分调试”,说明程序调试的工作量要比编程大得多。这里以如何上机调试C程序来说明C语言的学习方法。



第一步、验证性练习



在这一步要求按照教材上的程序实例进行原样输入,运行一下程序是否正确。在这一步基本掌握C语言编程软件的使用方法(包括新建、打开、保存、关闭C程序,熟练地输入、编辑C程序;初步记忆新学章节的知识点、养成良好的C语言编程风格)。
初学者最容易犯的错误是:

1、没有区分开教材上的数字1和字母l,字母o和数字0的区别,造成变量未定义的错误。另一个易错点是将英文状态下的逗号,分号;括号()双引号""输入出入成中文状态下的逗号,分号;括号(),双引号“”造成非法字符错误。

2、C语言初学者易犯语法错误:使用未定义的变量、标示符(变量、常量、数组、函数等)不区分大小写、漏掉“;”、“{”与“}”、“(”与“)”不匹、控制语句(选择、分支、循环)的格式不正确、调用库函数却没有包含相应的头文件、调用未C声明的自定义函数、调用函数时实参与形参不匹配、数组的边界超界等。

3、修改C语言语法错误时要注意以下两点:

(1)、由于C语言语法比较自由、灵活,因此错误信息定位不是特别精确。例如,当提示第10行发生错误时,如果在第10行没有发现错误,从第10行开始往前查找错误并修改之。

(2)、一条语句错误可能会产生若干条错误信息只要修改了这条错误,其他错误会随之消失。特别提示:一般情况下,第一条错误信息最能反映错误的位置和类型,所以调试程序时务必根据第一条错误信息进行修改,修改后,立即运行程序,如果还有很多错误,要一个一个地修改,即,每修改一处错误要运行一次程序。
第二步、照葫芦画瓢
在第一步输入的C程序的基础上进行试验性的修改,运行一下程序看一看程序结果发生了什么变化,分析结果变化的原因,加深新学知识点的理解。事实上这和第一步时同步进行的,实现“输入”加深知识的记忆,“修改”加深对知识的理解。记忆和理解是相辅相成的,相互促进。

例如:将最简单的Hello World!程序
#include "stdio.h"
int main()
{
printf("Hello World!
");
return 0;
}
中的

printf("Hello World!
");

中的Hello World!改成你的姓名,运行一下程序,看有什么变化?

再如求1+2+3...+100的和的程序

#include

main()

{

int i,sum=0;

for(i=1;i<=100;i++)
{
sum=sum+i;
}
printf("sum=%d
",sum);
}



第1次将for(i=1;i<=100;i++)中的100改成50,运行一下程序,看有什么变化?

第2次将for(i=1;i<=100;i++)中的i++改成i=i+2,运行一下程序,看有什么变化?

找出程序结果变化的原因,就加深了对C语句的理解。


第三步、不看教材看是否能将前两步的程序进行正确地输入并运行。



在这一步要求不看教材,即使程序不能运行,看能否将其改正,使其能正确运行。目的是对前两步的记忆、理解进一步强化。



第四步、增强程序的调试能力



在教材中每章都有C语言初学者易犯的错误,按照易出错的类型,将教材中的正确的程序改成错误的程序,运行一下程序,看出现的错误信息提示,并记下错误信息,再将程序改成正确的,运行一下程序。这样反复修改,就能够学习C语言程序发生错误的原因和修改错误的能力。

注意:每次只改错一个地方,目的是显示发生该错误的真正原因,避免一次改动多个地方,搞清发生错误的真正原因,切记!!!!

注意:上机调试程序时要带一个记录本,记下英文错误提示信息和解决该错误问题的方法,积累程序调试经验,避免在编程犯同样的错误,切记!!!!。

例如,将Hello World程序中语句

printf("Hello World!
");

中的;改成中文的分号;

运行一下程序,看有什么结果?




调试程序是一种实践性很强的事,光纸上谈兵是是没用的,就像游泳运动员只听教练讲解示范,而不亲自下水练习,是永远学不会游泳的。

即使在优秀的程序员编写程序也会犯错误的,可能事最低级的语法错误,但他能快速发现错误并改正错误,而我们C语言初学者面对错误提示,不知道发生了什么错误,如何改正,这就事差别。



第五步、研究典型的C语言程序,提高程序设计能力


C语言初学者遇到最多的困惑是:上课也能听懂,书上的例题也能看明白,可是到自己动手做编程时,却不知道如何下手。发生这种现象的原因是:所谓的看懂听明白,只是很肤浅的语法知识,而没有深刻地理解C语言的语句的执行过程(或流程)。

计算机是按照人的指令(编写的程序)去执行的,如果不知道这些C语句在计算机中是如何执行的,你怎么回灵活运用这些知识去解决实际问题呢?

解决问题的方法是要先理解C语言各种语句的流程(即计算机是如何执行这些语句的过程),然后研读现成C语言经典程序,看懂别人事如何解决问题的,以提高自己的程序设计能力。
第六步、研究课程设计源成序,提高C语言的综合应用能力.

是娄,不过这题目在 潭浩强的《C语言程序设计》中的课后练习题,你要是有那本书的话,你就参考那一章节前面的 兔子繁殖问题 就行了,不是很难的

#include<stdio.h>
#include<string.h>
#include<stdlib.h>
using namespace std;
main()
{
char str1[10][10];
char str2[10];
int i,j;
printf("ENTER str1[0-9]:
");
for(i=0;i<10;i++)scanf("%s",str1[i]);
for(i=0;i<10;i++)
 {for(j=0;j<10-i-1;j++)
     {
     if(strcmp(str1[j+1],str1[j])>0)
              {//printf("%s<%s;",str1[j],str1[j+1]);
               strcpy(str2,str1[j]);
               strcpy(str1[j],str1[j+1]);
               strcpy(str1[j+1],str2);
               }
     }
 }
printf("
");
 printf("BIG-SMALL:
");
 for(i=0;i<10;i++)
 {
 printf("%s
",str1[i]);
 }
 system("PAUSE");
 return 0;
}

你这样修改一下就好了。运行结果如下:

你自己的代码,下面这一段有误,造成排序没有全量参加:

i<9,改为i<10就好了。因为字符串组是10个,小于9的话,只有9个字符串参与冒泡排序。



主要错在 for(j=0;j<9-i;j++); 这里多了一个分号。
给你改了一下,从大到小排队输出:
#include<stdio.h>
#include<string.h>
int main(){
char str1[10][10],str2[10];
int i,j;
printf("ENTER CHAR:\n");
for(i=0;i<10;i++) scanf("%s",str1[i]);
for(i=0;i<9;i++)
for(j=i+1;j<10;j++)
{ if(strcmp(str1[j],str1[i])>0)
{
strcpy(str2,str1[j]);
strcpy(str1[j],str1[i]);
strcpy(str1[i],str2);
};
}
printf("BIG-SMALL:\n");
for(i=0;i<10;i++) printf("%s\n",str1[i]);
return 0;
}

学这个垃圾有什么用?老子学了几个月出来毛钱不值 工作都找不到 学这个垃圾屌用都没有 Java大数据那么主流的东西学出来都没什么用 工作真的找不到 人都要气死了 好吧 如果你像继续深研这个知识 那么你就钻研吧 希望no以后能保家卫国 fuck

数组越界了吧,把for循环改成:for(int i=1;i<=10;i++)试一下

通信终端控制模块,兄弟学硬件的吧,C语言虽然能直接访问机器,可是,一般都是用来编写系统软件的,得软硬兼备的人才写的出吧。


C语言编程问题,初学者,不太会,谢谢
编写一个函数,删去输入的一维数组中所有相同的数,使之只剩一个。数组中的数已按由小到大的顺序排列,函数返回删除后数组中数据的个数。在主函数输入一个有序数组,接着调用该自定义函数,最后输出删除重复数据后的数组元素。如:输入的数组元素为:999866000-2-2打印的结果为:9860-2 这个程序的实现...

C语言或者C++编写一个三角形问题
\/*三角形问题可以更详细地描述为:三角形问题:输入三个整数a、b和c分别作为三角形的三条边,要求a、b和c必须满足以下条件:Con 1.1≤a≤100 Con 4.a<b+cCon 2.1≤b≤100 Con 5.b<a+cCon 3.1≤c≤100 Con 6.c

C语言编程问题?
思路:1、利用ftell函数获取文件的长度(字节数)。2、利用fread函数读取文件所有内容。3、通过遍历字符串,进行大小写判断及转换。下面是演示代码:(命令符不想输入,连续两次回车)include <stdio.h> include <malloc.h> include <string.h> define FPH "C:\\\\test.txt"long getFileSize(char path...

为什么C语言编写的程序运行时闪一下就没了?
当C语言编写的程序运行时突然消失,通常源于设置上的问题。要解决这个问题,可以参考以下步骤:首先,从最基础的HELLO WORLD程序开始。当你编写并编译完成这个程序后,正常运行时,程序会在屏幕上显示“Hello World”,只有在用户按下任意键后才会关闭窗口。然而,当你直接双击执行生成的EXE文件时,可能会...

一个C语言指针问题。求大佬解答?
在这个程序中,我们首先提示用户输入方阵的尺寸,然后输入方阵的元素。接着,我们通过遍历方阵的每一行,并使用指针指向每行对应列的元素,来求出方阵对角线元素之和。最后,我们输出结果。程序的输出示例如下:include <stdio.h> int main(){ \/\/ 方阵的尺寸 int n;printf("Enter the size of the ...

JAVA这门语言编程时有哪些限制或局限?
解决的方法主要有:(1)“及时(Just in Time, JIT)编译器”(2)研究新的编译理论和技术 (3)使用JavaStation及JavaOS (4)采用Java芯片 将Java做成芯片,用来解释Java语句,把Java语句作为一条指令来执行,加快Java语言编写程序的执行。Java芯片可直接执行Java字节码。2.2 Java标准问题 目前还没有Java...

求助:用c语言编写班级中两个人生日概率相同问题
说明:由于计算机产生的是伪随机数,所以重复的几率比较高。思路:1年365天,用1到365表示。50个同学的生日用数组保存,随机产生一个1-365之间的数字作为生日 然后对数组进行相似判断,一旦有2个同学生日相同就返回1.然后计数器加1.最后处以总模拟的次数。代码:include "stdio.h"include "conio.h"in...

几个汇编语言问题.高手帮忙解答下..
DL,CF;有错,CF不能出现在指令的操作数中 20.MOV AL,300 ;有错,300超出字节表示范围 21.JDXZ NEXT ;有错,无JDXZ指令 假设数据定义如下:S1 DB 'GOOD MORNING'S2 DB 30 DUP('')用串指令编写程序段分别完成以下功能:1.从左到右把S1中的字符串传送到S2.LEA SI,S1 LEA DI,S2 MOV ...

c语言问题?
include <stdio.h>int main() { double num, pos_sum = 0, neg_sum = 0, sum = 0; printf("请输入10个数字:\\n"); for (int i = 0; i < 10; i++) { printf("请输入第%d个数字:", i+1); scanf("%lf", &num);sum += num; if (num > 0) { ...

C语言编写鸡兔同笼的问题
printf("请输入鸡兔的总头数\\n");scanf_s("%d",&a);printf("请输入鸡兔的总腿数\\n");scanf_s("%d",&b);scanf_s("%d",&M);M=(2*a)-(b\/2);printf("鸡的数目为%d只");scanf_s("%d",&N);N=(b\/2)-(a);printf("兔的数目为%d只");return 0;} 我目前是C语言的新手...

安定区14761012213: C语言编写问题 -
琦屈人参: printf("变为小写字母为:%c\n"#includea'} else if(ch1>='A'&amp,ch1); printf("&ch1 你输入的是大写字母;Z' } else ='你输入的字符不在范围内;=':%c\n"&nbsp,请重新输入; ) { printf("ch1

安定区14761012213: C语言编写问题,
琦屈人参: #include <iostream> using namespace std; int main() { int m,n; int sum=0; cout<<"请输入m"<<endl; cin>>m; cout<<"请输入n"<<endl; cin>>n; while(m<=n) { if(m%2==0) { sum+=m; ++m; } else { ++m; } } cout<<"m和n之间所有偶数之和是: "<<sum<<endl; cin.get(); cin.get(); return 0; } 刚编的的c++程序,如果想用c语言程序的话,可以修改一下头文件和输入输出关键字就可以了

安定区14761012213: c语言程序编写的问题 -
琦屈人参: s/=10的意思是说:s=s/10这句话是为了去掉最后一位比如7654321/10=765432 *t=s%10;这个*t是指针 意思是说把s/10取整的值赋值给*t(*t相当于一个变量)这句话是为了取得第一个偶数位比如765432%10=2 这个2就是7654321的第一个偶数位 ...

安定区14761012213: C语言编程问题
琦屈人参: 输出路径:Output Directory,就是你的源程序编译生成的.obj,.exe等存放的路径,默认是工作路径,当然你可以修改成你指定的路径. 按f10,然后在菜单中选择Options中的Directories选项进行修改

安定区14761012213: c语言编程问题
琦屈人参: #include "windows.h" #include "stdio.h" main() { char c; while ((c=getchar())!=EOF) { if(isalpha(c))//是字母 { if(islower(c))//是小写 { printf("小写字母\n"); } else { printf("大写字母\n"); } } else if(isdigit(c)) { printf("数字\n"); } else if(c==' ') { printf("空格\n"); } else { printf("其他字符\n"); } fflush(stdin); } } 输入ctrl+z 回车结束输入

安定区14761012213: C语言编程问题请各位大侠帮忙看看我写的程序有什么问题?谢谢了!要
琦屈人参: 你的程序少写了一个字母,你把倒数第四行那个 printf 改成 fprintf 就好了. 我测试过了,没什么问题:) ---------------------------------------------- #include void main() { char str[5][60]; FILE *fp; fp=fopen("d:\\abc.dat","w+"); int i; for(i=0;i 全部

安定区14761012213: C语言编程问题
琦屈人参: scanf是一个ANSI C标准格式化输入函数,标准库对它的转换说明符 对"s"的描述中是其读取一个多字节字符序列并自动添加一个空字符,开始时扫描输入流的第一个非空白字符进行后续读取直到以一个isspace()能识别的空白字符结束,所以它只能读单词. 简单改成: gets(str); 就可以了.或者编写更正式和安全的: fgets(str, 100 - 1, stdin); str[strchr(str, '\n') - str] = '\0';

安定区14761012213: 说出几条编写规范C语言需要注意的问题,有助于自己或别人以后读懂你编的程序 -
琦屈人参: 几个方面入手:1、变量命名规范 推荐骆驼命名法2、代码书写规范 有良好的组织 格式3、添加注释的习惯 这些你们老师肯定给你讲了吧!自己组织下语言就OK了

安定区14761012213: c语言程序编写的问题
琦屈人参: 这种写法就相当于 if(s[i]>='0' && s[i]<='9') { s[j]=s[i]; j++; } 其实,j++的意思是先引用后增值,比如第一个数如果成立的话,那么j为0,此时先引用j的值0,也就是s[0]=s[i],然后再对j进行增值,j=j+1;在下次成立时j就变成了1了,然后再循环直到遇到字符串结尾符\0结束 (顺便说一下,你的图好小哦~~看起来好费力)

安定区14761012213: c语言编程问题
琦屈人参: 这样,加两条语句,让屏幕等你一下: #include <stdio.h> #include <conio.h> int main(void) { printf("Hello,Worldl\n"); getch(); return 0; }

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网