当前位置:首页 » 编程语言 » c语言解惑

c语言解惑

发布时间: 2022-02-15 21:13:37

A. c语言学习问题,高手进来解惑,不胜感激!

同意楼上的观点,很多初学者一位能听懂就行拉,很少上机实践,就像学游泳只听理论不下水,学完之后还是不会游啊。

建议你可以首先把课本上的例子敲一遍,
边敲边总结人家是按照什么顺序写的,
想想一个程序的流程。
然后同样的题目自己再做一遍,
找找错误,
总结经验。

然后找些简单的题目来做,
有简单到容易。
前提是语法已经掌握差不多。
至于算法什么的,
因为初学者一般也遇不到什么特别难的题
自己编程之前先在脑子里把解决方法找出来就行。
当达到一定程度的时候,
对于程序的调试也很重要,
自己要试着去解决编译和运行中出现的错误。
当然,
这对于你来说是后话。

一句话,多练练!
加油!

B. 《C语言解惑:指针、数组、函数和多文件编程》pdf下载在线阅读,求百度网盘云资源

《C语言解惑:指针、数组、函数和多文件编程》(刘振安)电子书网盘下载免费在线阅读

资源链接:

链接:

提取码:l5c4

书名:C语言解惑:指针、数组、函数和多文件编程

作者:刘振安

出版社:机械工业出版社

出版年份:2016-12-1

页数:443

C. C语言程序 !达人解惑!

#include "stdio.h"
#include<conio.h>
#include<string.h>
#include<stdlib.h>

struct book{ //教材信息
char number[20]; //教材编号
char bookname[20]; //书名
int count; //数目
int price; //价格
char zhuanye[20]; //专业
char author[20]; //作者
char chubanshe[20]; //出版社
char beizhu[100]; //备注
struct book *next;
};

void page_title(char *title); //菜单表头
struct book *creat(); //录入教材信息
void print(struct book *head); //显示教材信息
void save(struct book *head); //保存教材信息到文件
struct book *openfile(); //打开文件
void namesort(struct book *head); //按书名排序
void chubanshesort(struct book *head); //按出版社排序
void booknamesearch(struct book *head); //查询函数
struct book *add(struct book *head); //增加记录
struct book *delet(struct book *head); //删除记录
struct book *change(struct book *head); //修改记录
int key(); //密码验证

void page_title(char *title) //菜单表头
{
system("cls"); //清除屏幕
printf(" =========== 教材管理系统 ===========\n\n-%s-\n\n",title);//显示标题
}

struct book *creat() //录入教材信息,返回的是结构体指针
{
struct book *p,*head,*end;
page_title("录入教材信息");
//显示结果:
//=========== 教材管理系统 ===========
//
//-录入教材信息-
//
//
head=end=p=(struct book *)malloc(sizeof(struct book));//分配内存空间
//sizeof(struct book)测出结构体大小,然后malloc分配空间,最后强制转
//换成book结构体
printf("输入编号为0结束输入\n");
do
{
printf("\n教材编号:");
gets(p->number);//输入教材编号放入刚分配的结构中的number中
//调用strcmp()函数,以输入的字符串与“0”比较。如果相等,
//把结构体END的尾指针指空,并返回头指针,结束函数。
if(strcmp(p->number,"0")==0){ end->next=NULL; return head;}
// 如果不相等,把P附值给尾指针(根据你的补充。END应该可以理解为队尾指针)
//就像添加一组对象,就把此对象放到队尾...
end=p;

建议另外重新定义一个结构体保存链头指针与数目,因为这些是很容易丢的,万一丢了,就把链表丢了。不好~
gets函数不是一个安全的函数....本人不喜欢。不熟悉的最好不要用。不明白的可以向我提问~给分3Q ^_^!

D. C语言程序 !达人解惑!2

void student_edit(void) /*修改学生信息*/
{
int n;
page_title("student_edit");
if((n=search_id())!=-1)/*通过调用serch_id()函数寻找需要修改资料的学生*/
{
printf("\nPlease input again:\nid:"); /*如果找到,则输入新的学生信息,以替换之前的学生信息*/
scanf("%d",&students[n].id);
printf("name:");
scanf("%s",&students[n].name);
printf("age:");
scanf("%d",&students[n].age);
}
return_confirm();
}
void score_input(void) /*输入学生成绩*/
{
int n;
page_title("score_input");
if((n=sear_id())!=-1) /*通过调用sear_id()函数寻找需要输入成绩的学生*/

{
printf("\nPlease input the score :\nchinese:");/*如果找到,则输入该学生的各门功课的成绩*/
scanf("%d",&students[n].chinese);
printf("math:");
scanf("%d",&students[n].math);
printf("english:");
scanf("%d",&students[n].english);
}
return_confirm();
}

void score_edit(void) /*修改学生成绩*/
{
int n;
page_title("score_edit");
if((n=search_id())!=-1) /*通过调用search_id()函数寻找需要修改成绩的学生*/

{
printf("chinese:%d math:%d english:%d\n",students[n].chinese,students[n].math,students[n].english);/*如果找到,则输入该学生的各门功课的新成绩以替换原来的成绩*/
printf("\nPlease input the score again:\nchinese:");
scanf("%d",&students[n].chinese);
printf("math:");
scanf("%d",&students[n].math);
printf("english:");
scanf("%d",&students[n].english);
}
return_confirm();
}

void sort_it(char nn) /*排序*/
{
int n,j,p,x,t[32];
for(n=0;n<m;n++)
{
switch(nn) /*根据传入参数nn的不同,根据不同的成员值进行排序*/
{
case '1' : t[n]=students[n].id;break; /*如果nn是'1',就以ID的大小进行排序*/
case '2' : t[n]=students[n].chinese;break;/*如果nn是'2',就以语文成绩的大小进行排序*/
case '3' : t[n]=students[n].math;break; /*如果nn是'3',就以数学成绩的大小进行排序*/
case '4' : t[n]=students[n].english;break;/*如果nn是'4',就以英语成绩的大小进行排序*/
case '5' : t[n]=students[n].chinese+students[n].math+students[n].english;break;/*如果nn是'5',就以总分的大小进行排序*/
}
}
for(n=0;n<m;n++) /*用上面确定的排序依据进行排序*/
{
x=0;
p=-1;
for(j=0;j<m;j++)
{
if(t[j]>x)
{
x=t[j];
p=j;
}
}
t[p]=-1;
INDEX[n]=p;/*排序结果保存到INDEX数组中*/
}
}

void browser(void) /*浏览学生数据*/
{
int n,x;
char k;
sort_it('1'); /*以ID大小进行排序*/
while(1)
{
page_title("browser");
printf("Please enter any NUM or enter 0\n");
printf("id-1\tname\tage\tchinese-2\tmath-3\tenglish-4\ttotal-5\n");
for(n=0;n<m;n++) /*输出排序后的结果*/
{
if(INDEX[n]!=-1)
{
x=INDEX[n];
printf("%d\t%s\t",students[x].id,students[x].name);
printf("%d\t%d\t\t",students[x].age,students[x].chinese);
printf("%d\t%d\t\t",students[x].math,students[x].english);
printf("%d\n",students[x].chinese+students[x].math+students[x].english);
}
}
k=getch(); /*输入'1'~'5'之间的一个字符*/
if(k<'6'&&k>'0') sort_it(k); /*如果输入正确,就用k对应的依据重新排序*/
else if(k=='0') break; /*如果输入的字符是'0',则退出*/
else continue; /*如果输入的其它字符,则继续循环*/
}
}

void main(void)
{ int i;
menu: page_title("page_title"); /*调用page_title()函数输出标题,这一行中设置了一个标志menu,在后面的goto语句中通过这个标志可以跳到这一行*/
printf("Please enter any NUM\n\n"); /*输出各项菜单选项*/
printf("1 student_new\n2 student_edit\n");
printf("3 student_del\n4 score_input\n5 score_edit\n");
printf("6 browser \n7 load \n8 save \n9 search\n0 exit\n");
switch(getch()) /*对菜单选择进行响应,*/
{
case '1' : student_new();break;
case '2' : student_edit();break;
case '3' : student_del();break;
case '4' : score_input();break;
case '5' : score_edit();break;
case '6' : browser();break;
case '7' : load();break;
case '8' : save();break;
case '9' : i=search_id();
printf("\n press any key continue...\n");
getch();
break;
case '0' : exit(0);
}
goto menu;/*跳到menu标志所在行*/
//---------------------------------------------------------------------------

E. 关于C语言中的int恳请各位高手解惑

这涉及到常量和变量存储方式的不同。“My
favorite
number
is
1
because
it
is
first”是字符串常量,在文字常量区存放,而int
num;
num
=
1;是要在栈区开辟一个新的空间,然后将1复制到该空间。定义整型变量的意义在于变量可以被重复赋值以及进行数学运算。比如此时num=1,我也可以将num的值设置为2,或者num++作自增操作等等,而如果是“My
favorite
number
is
1
because
it
is
first”,则不能进行这些操作,只能输出到控制台。
纯手写,请采纳。

F. c语言暴力解决问题 求大神解惑

#include"stdio.h"
#include"string.h"
#defineN4

intneed[N];
intunk[N];
intused[N];
intguessCount;
intguessData[100][3];

voidguess();
voidreadGuessData();
intisCorrectNumber(intnum);
intisCorrectGuessTime(intguessTime);
voidtoDigitArray(intn,inta[]);
intcountCorrectPositions();
intcountCorrectDigits();
voidsetZeros(inta[]);

intmain(){
while(scanf("%d/n",&guessCount)&&guessCount!=0){
guess();
}

return0;
}

voidguess(){
intnum;
intcorrectNumber=0;
intcorrectNumberCount=0;

readGuessData();

for(num=1000;num<10000;num++){
if(isCorrectNumber(num)){
correctNumber=num;
correctNumberCount++;
}
}

if(correctNumberCount==1){
printf("%d ",correctNumber);
}else{
printf("Notsure ");
}
}

intisCorrectNumber(intnum){
inti=0;

toDigitArray(num,unk);

for(i=0;i<guessCount;i++){
if(isCorrectGuessTime(i)==0){
return0;
}
}

return1;
}

intisCorrectGuessTime(intguessTime){
toDigitArray(guessData[guessTime][0],need);

if(guessData[guessTime][1]==countCorrectDigits()&&guessData[guessTime][2]==countCorrectPositions()){
return1;
}
return0;
}

voidreadGuessData(){
inti=0;
for(i=0;i<guessCount;i++){
scanf("%d%d%d/n",&guessData[i][0],&guessData[i][1],&guessData[i][2]);
}
}

voidtoDigitArray(intn,inta[]){
a[3]=n%10;
n/=10;
a[2]=n%10;
n/=10;
a[1]=n%10;
n/=10;
a[0]=n;
}

intcountCorrectDigits(){
inti=0;
intj=0;
intcount=0;

setZeros(used);

for(i=0;i<4;i++){
for(j=0;j<4;j++){
if(used[j]==0&&need[i]==unk[j]){
count++;
used[j]=1;
break;
}
}
}
returncount;
}

intcountCorrectPositions(){
intcount=0;
if(need[0]==unk[0])
count++;
if(need[1]==unk[1])
count++;
if(need[2]==unk[2])
count++;
if(need[3]==unk[3])
count++;
returncount;
}

voidsetZeros(inta[]){
inti=0;
for(i=0;i<4;i++){
a[i]=0;
}
}

热点内容
电脑怎么看网络密码 发布:2025-01-10 14:56:40 浏览:108
java调用shell脚本参数 发布:2025-01-10 14:43:51 浏览:52
php数组计数 发布:2025-01-10 14:23:03 浏览:474
s盒算法 发布:2025-01-10 14:16:42 浏览:643
c语言用二分法求方程 发布:2025-01-10 14:15:45 浏览:220
广场舞加密 发布:2025-01-10 14:13:21 浏览:521
网络密码显示低安全性是什么意思 发布:2025-01-10 14:11:49 浏览:782
耻辱2博士保险箱密码是多少 发布:2025-01-10 14:11:41 浏览:101
如何把服务器搭在自己电脑 发布:2025-01-10 14:10:57 浏览:585
水晶可以存储 发布:2025-01-10 14:09:35 浏览:391