譚浩強c語言課後答案
① 譚浩強(第三版)C語言的課後答案 要第13章
第十三章
13.4從鍵盤輸入一個字元串,將其中的小寫字母全部轉換成大寫字母,然後輸出到一個磁碟文件「test」中保存。輸入的字元串以「!」結束。
解:#include <stdio.h>
main()
{
File *fp;
Char str[100];
Int I=0;
If((fp=fopen(「test」,」w」)==NULL)
{printf(「Can not open the file\n」);
exit(0);
}
printf(「Input a string:\n」);
gets(str);
while(str[i]!=』!』)
{if (str[i]>=』a』&&str[i]<=』z』)
str[i]=str[I-32];
fputc(str[i],fp);
I++;
}
fclose(fp);
fp=fopen(「test」,」r」);
fgets(str,strlen(str)+1,fp);
printf(「%s\n」,str);
fclose(fp);
}
13.5有兩個磁碟文件」A」和」B」,各存放一行字母,要求把這兩個文件中的信息合並(按字母順序排列),輸出到一個新文件」C」中。
解:#include<stdio.h>
main()
{
FILE *fp;
Int I,j,n,i1;
Char c[100],t ,ch;
If((fp=fopen(「a1」,」r」))==NULL)
{printf(「can not open the file\n」);
exit(0);
}
printf(「\n file A:\n」);
for(I=0;(ch=fgetc(fp)!=EOF;I++)
{c[i]=ch;
putchar(c[i]);
}
fclose(fp);
i1=I;
if((fp=fopen(「b1」,」r」))==NULL)
{printf(「\n can not ipen the file」);
exit(0);
}
printf(「\n file B:\n」);
for(I=i1;(ch=fgenc(fp))!=EOF;I++)
{c[i]=ch;
putchar(c[i]);
}
fclose(fp);
n=I;
for(i=0;I<n;I++)
for(j=I+1;j<n;j++)
if(c[i]>c[j])
{t=c[i];
c[i]=c[j];
c[j]=t;
printf(「\n file C:\n」);
fp=fopen(「c1」,」w」);
for(I=0;I<n;I++)
{putc(c[i],fp);
putchar(c[i]);
}
fclose(fp);
}
13.6有5個學生,每個學生有3門課的成績,從鍵盤輸入以上數據(包括學生號、姓名、三門課成績),計算出平均成績,將原有數據和計算出的平均分數存放在磁碟文件stud中。
解:
#include<stdio.h>
struct student
{char num[10];
char name[8];
int score[3];
float ave;
}stu[5];
main()
{int I,j,sum;
FILE *fp;
For(I=0;I<5;I++)
{printf(「\n input score of student%d:\n」,I+1);
printf(「NO.:」);
scanf(「%s」,stu[i].num);
printf(「name:」);
scanf(「%s」,stu[i].name);
sum=0;
for(j=0;j<3;j++)
{printf(「score %d :」j+1);
scanf(「%d」,&stu[i].score[j]);
sum+=stu[i].score[j];
}
stu[i].ave=sum/3.0
}
fp=fopen(「stud」,」w」);
for(I=0;I<5;I++)
if(fwrite(&stu[i],sizeof(struct student),1,fp)!=1)
printf(「File write error\n」);
fclose(fp);
fp=fopen(「stud」,」r」);
for(I=0;I<5;I++)
{fread(&stu[i],sizeof(struct student),1,fp);
printf(「%s,%s,%d,%d,%d,%6.2f\n」,stu[i].num,stu[i].name,stu[i].score[0], stu[i].score[1], stu[i].score[2] ,stu[i].ave);
}
}
13.7將上題stud文件中的學生數據按平均分進行排序處理,並將已排序的學生數據存入一個新文件stu-sort中。
解:
#include <stdio.h>
#define N 10
struct student
{char num[10];
char name[8];
int score[3];
float ave;
}st[N],temp;
main()
{
FILE *fp;
Int I,j,n;
If((fp=fopen(「stud」,」r」))==NULL)
{printf(「can not open the file」);
exit(0);
}
printf(「\n file 『stud』:」);
for(I=0;fread(&st[i],sizef(struct student),1,fp)!=0;I++)
{printf(「\n%8s%8s」,st[i].num,,st[i].name);
for(j=0;j<3;j++)
printf(「%8d」,st[i].score[j]);
printf(「%10.f」,st[i].ave);
fclose(fp);
n=I;
for(I=0;I<n;I++)
for(j=I+1;j<n;j++)
if(st[i].ave<st[j].ave)
{temp=st[i];
st[i]=st[j];
st[j]=temp;
}
printf(「\nnow:」);
fp=fopen(「stu-sort」,」w」);
for(I=0;I<n;I++)
{fwrite(&st[i],sizeof(struct student),1,fp);
printf(「\n%8s%8s」,st[i].num,st[i].name);
for(j=0;j<3;j++)
printf(「%8d」,st[i].score[j]);
printf(「%10.2f」,st[i].ave);
fclose(fp);
}
13.8將上題以排序的學生成績文件進行插入處理。插入一個學生的3門課成績,程序先計算新插入學生的平均成績,然後將它按平均成績高低順序插入,插入後建立一個新文件。
解:#include <stdio.h>
struct student
{char num[10];
char name[8];
int score[3];
float ave;
}st[10],s;
main()
{FILE *fp, * fp1 ;
int I,j,t,n;
printf(「\n NO.:」);
scanf(「%s」,s.num);
printf(「name:」);
scanf(「%s」,s.name);
printf(「score1,score2,score3:」);
scanf(「%d,%d,%d」,&s. score[0], &s. score[1], &s. score[2]);
s.ave=(s.score[0]+s.score[1]+s.score[2])/3.0;
if((fp=fopen(「stu_sort」,」r」))==NULL)
{printf(「can not open file.」);
exit(0);
}
printf(「original data:\n」);
for(I=0;fread(&st[i],sizeof(struct student),1,fp)!=0;I++)
{printf(「\n%8s%8s」,st[i].num,st[i].name);
for(j=0;j<3;j++)
printf(「%8d」,st[i].score[j]);
printf(「%10.2f」,st[i].ave);
}
n=I;
for(t=0;st[t].ave>s.ave&&t<n;t++);
printf(「\nnow:\n」);
fp1=fopen(「sort1.dat」,」w」);
for(I=p;j<t;I++)
{fwrite(&st[i],sizeof(stuct student),1,fp1);
print(「\n%8s%8s」,st[i],num,st[i].name);
for(j=0;j<3;j++)
ptintf(「%8d」,st[i].score[j]);
printf(「%10.2f」,st[i].ave);
}
fwrite(&s,sizeof(struct student),1,fp1);
printf(「\n%8s%7s%7d%7d%7d%10.2f」,s.num,s.name,s.score[0],s.score[1],s.score[2],s.ave);
for(I=t;I<n;I++)
{fwrite(&st[i],sizeof(struct student),1,fp1);
printf(「\n %8s%8s」,st[i].num,st[i].name);
for(j=0;j<3;j++)
printf(「%8d」,st[i].score[j]);
printf(「10.2f」,st[i].ave);
fclose(fp);
fclose(fp1);
}
13.9上題結果仍存入原有的stu_sort文件而不另建立新文件。
解: #include<stdio.h>
struct student
{char num[10];
char name[8];
int score[3];
float ave;
}st[10],s;
main()
{FILE *fp, *fp1;
int I ,j,t,n;
printf(「\nNO.:」);
scanf(「%s』,s.num);
printf(「name:」);
scanf(「%s』,s.name);
printf(「score1,score2,score3:」);
scanf(「%d%d%d」,&s.score[0]+&s.score[1]+&s.score[1], &s.score[2]);
s.ave=( s.score[0]+ s.score[1]+ s.score[2])/3.0;
if((fp=fopen(「stu=sort」,」r」))==NULL)
{printf(「can not open the file.」);
exit(0);
}
printf(「original data:\n」);
for(I=0;fread(&st[i],sizeof(struct student),1,fp)!=0;I++)
{printf(「\n%8s%8s」,st[i].num,st[i].name);
for(j=0;j<3;j++)
printf(「%8d」,st[i].score[j]);
printf(「%10.2f」,st[i].ave);
}
fclose(fp);
n=I;
for(t=0;st[t].ave>s.ave+&&t<n;t++);
ptintf(「\nnow:\n」);
fp=fopen(「stu_sort」,」w」);
for(I=0;I<t;I++)
{fwrite(&st[i],sizeof(struct student),1,fp);
printf(「\n%9s%8s%8d%8d%8d%10.2f」,s.num,s.name,s.score[0],s.score[1] s.score[2] s.ave);
for(I=t;I<n;I++)
{fwrit(&sr[i],sizeof(struct srudent),1,fp);
printf(「\n %8s%8s」,st[i].num,st[i].name);
for(j=0;j<3;j++)
printf(「%8d」,st[i].score[j]);
printf(「%10.2f」,st[i].ave);
}
fclose(fp);
}
13.10 有一磁碟文件emploee,內存放職工的數據。每個職工的數據包括:職工姓名、職工號、性別、年齡、住址、工資、健康狀況、文化程度。要求將職工名和工資的信息單獨抽出來另建一個簡明的職工工資文件。
解:#include<stdio.h>
struct emploee
{char num[6];
char name[10];
char sex[2];
int age;
char addr[20];
int salary;
char health[8];
char class[10];
}en[10];
struct emp
{char name[10];
int salary;
}em-case[10];
main()
{FILE *fp1, *fp2;
int I,j;
if ((fp1=fopen(「emploee」,」r」))==NULL)
{printf(「can not open the file.」);
exit(0);
}
printf(「\n NO. name sex age addr salary health class\n」);
for(I=0;fread(&em[i],sizeof(struct emploee),1,fp1)!=p;I++)
{printf(「\n%4s%8s%4s%6s%10s%6s%10s%8s」,em[i].num,em[i].name,em[i].sex, em[i].age, em[i].addr, em[i].salary, em[i].health, em[i].class);
strcpy(em_case[i].name, em[i].name);
em_case[i].salary=en[i].salary;
}
printf(「\n\n*****************************************」);
if((fp2=fopen(「emp_salary」,」wb」))==NULL)
{printf(「can not open the file.」);
exit(0);}
for(j=0;j<I;j++)
{if(fwrite(&en_case[j],sizeof(struct emp),1,fp2)!=1)
printf(「error!」);
printf(「\n %12s%10d」,em_case[j].name,em_case[j].salary);
}
printf(「\n*******************************************」);
fclose(fp1);
fclose(fp2);
}
13.11從上題的「職工工資文件」中刪區一個職工的數據,再存回原文件。
解:#incude <stdio.h>
#incude <string.h>
struct emploee
{char name[10];
int salary;
}emp[20];
main()
{FILE *fp;
int I,j,n,flag;
char name[10];
int salary;
if((fp=fopen(「emp_salary」,」rb」))==NULL)
{printf(「can not open file.」);
exit(0);
}
printf(「\n original data:」);
for(I=0;fead(&emp[i],sizeof(struct emploee),1,fp)!=0;I++)
printf(「\n %8s %7d」,emp[i].name,emp[i].salary);
fclose(fp);
n=I;
printf(「\n input name deleted:」);
scanf(「%s」,name);
for(flag=1,I=0;flag&&I<n;I++)
{if(strcmp(name,emp[i].name)==0)
{for(j=I;j<n-1;j++)
{strcmp(name,emp[i].name)==0
{for(j=I;j<n-1;j++)
{strcpy(emp[j].name,emp[j+1].name);
emp[j].salary=emp[j+1].salary;
}
flag=0;
}
}
if(!flag)
n=n-1;
else
printf(「\n Now,the content of file:\n」);
fp=fopen(「emp-dalary」,」wb」);
for(I=p;I<n;I++)
fwrite(&emp[i],sizeof(struct emploee),1,fp);
fclose(fp);
fp=fopen(「emp_salary」,」r」);
for(I=0;fread(&emp[i],sezeof(struct emploee),1,fp)!=0;I++)
printf(「\n%8s%7d」,emp[i].name,emp[i].salary);
fclose(fp);
}
13.12 從鍵盤輸入若干行字元(每行長度不等),輸入後把它們存儲到一磁碟文件中。再從該文件中讀入這些數據,將其中小寫字母轉換成大寫字母後在顯示屏上輸出。
解: #include<stdio.h>
main()
{int I,flag;
char str[80],c;
FILE *fp;
Fp=fopen(「text」,」w」);
Flag=1;
While(flag==1)
{printf(「\n Input string:\n」);
ges(str);
fprintf(fp,」%s」,str);
printf(「\nContinue?」);
c=getchar();
if((c==』N』)||(c==』n』))
flag=0;
getchar();
}
fcolse()fp;
fp=fopen(「text」,」r」);
while(fscanf(fp,」%s」,str)!=EOF)
{for(I=0;str[i]!=』\0』;I++)
if((str[i]>=』a』)&& (str[i]<=』z』))
str[i]-=32;
printf(「\n%s\n」,str);
}
fclose(fp);
}
② 《C語言程序設計教程》第三版(譚浩強\張基溫)編著,高等教育出版社出版,課後習題答案!
#include<stdio.h>
void main()
{
printf("I am a student.\n");
printf(" I love china .\n");
}
③ C語言程序設計第五版 譚浩強 第五版課後答案
C語言程序設計第五版的課後習題答案覆蓋了多個章節,包括程序和程序設計的基本概念、計算機語言的作用及高級語言特點、程序的各個組成部分(如源程序、目標程序、可執行程序等)、函數和主函數、庫函數的區別,以及程序調試和測試的方法。以最基礎的為例,一個簡單的Hello World!程序展示了程序的輸出。
章節內容詳細解析了程序設計中的術語,如源程序如何編譯預處理並轉換為目標程序,以及如何通過編譯、連接步驟生成可執行程序。此外,還介紹了函數和主函數的概念,以及如何區分函數、被調用函數和庫函數。程序調試和測試的重要性也在章節中得到強調,以確保程序的正確性。
從第一章開始,答案逐步深入,詳細解答了後續章節的習題,包括第二章到第十章的內容。對於初學者來說,這些答案是理解和掌握C語言程序設計的重要參考資源。
④ 求譚浩強的《C語言程序設計》第三版(蕞新)電子版!
譚浩強C語言教程全書 Word版
http://bbs.topsage.com/dispbbs_121_171227_1.html
c 程序設計習題參考(譚浩強二.三版)
http://www.khdaw.com/bbs/thread-80-1-1.html
http://www.khdaw.com/bbs/thread-47-1-4.html
譚浩強教材:
http://ishare.iask.sina.com.cn/cgi-bin/fileid.cgi?fileid=4363060
譚浩強習題答案:
http://ishare.iask.sina.com.cn/cgi-bin/fileid.cgi?fileid=2302699
吉林大學C語言視頻教程 全51集 CSF格式
http://bbs.topsage.com/dispbbs.asp?boardID=121&ID=177517
C語言基礎視頻教程 全14講 完整上架
http://bbs.topsage.com/dispbbs.asp?boardID=121&ID=181035
C語言程序設計視頻教程 曾怡教授講解 全28講完整版下載
http://bbs.topsage.com/dispbbs.asp?boardID=121&ID=181575
數據結構視頻教程 清華大學嚴蔚敏主講 全48講 完整版 ASF格式
http://bbs.topsage.com/dispbbs.asp?boardID=121&ID=165468
數據結構C語言版視頻教程 全52講完整版
http://bbs.topsage.com/dispbbs.asp?boardID=121&ID=156467
⑤ 求《C語言程序設計》第四版,譚浩強編,清華大學出版社 課後習題答案
#include<stdio.h>
int main(){
fload a[3];
scanf("%f,%f,%f",&a[0],&a[1],&a[2]);
float temp;
if(a[0]>a[1]){
temp = a[0];
a[0] = a[1];
a[1] = temp;
}
if(a[1]>a[2]){
temp = a[1];
a[1] = a[2];
a[2] = temp;
}
if(a[0]>a[1]){
temp = a[0];
a[0] = a[1];
a[1] = temp;
}
print("%f %f %f \n", a[0],a[1],a[2]);
}
⑥ 求譚浩強C語言程序設計電子書 哪一版比較好本人菜鳥希望各位大蝦幫忙
1.這是教材:
http://ishare.iask.sina.com.cn/cgi-bin/fileid.cgi?fileid=4363060
2.這是習題答案:
http://ishare.iask.sina.com.cn/cgi-bin/fileid.cgi?fileid=2302699
3.這是視頻:
http://www.verycd.com/topics/182074/
其他
迅雷下載:
===============
C程序設計題解與上機指導(譚浩強)
http://58.251.57.206/down?cid=&t=3&fmt=
================
C語言程序設計(第三版)-譚浩強.rar(3.6M) ---有一堆
http://search.gougou.com/search?search=%E8%B0%AD%E6%B5%A9%E5%BC%BA%20C%E7%A8%8B%E5%BA%8F%20%E4%B8%89&id=2