C言語実験コード
152986 ワード
データ型と式の実験を実験します
一.実験目的及び要求(1)C言語におけるデータ型の意味を理解する.(2)常用演算子の意味を理解する.(3)C言語表現式の実行規則を把握する.(4)実験報告書を作成する.
二.実験内容(1)キーボードから入力された2つの整数データを計算し、それらの平均値を求めて画面に出力する.(2)預金金額money、預金期間year、年利率rateを入力し、以下の式に従って預金満期時の利息interest(税引き前)を計算し、出力時に2桁の小数を保持する.interest=money(1+rate)year-money(3)は「China」例えば、アルファベット「A」の后ろの4番目のアルファベットは「E」です.「E」の代わりに「A」の后ろの4番目のアルファベットは「E」です.したがって、「China」は「Glmre」と訳される.初期値を付与する方法でcl,c 2,c 3,c 4,c 5の5つの変数の値をそれぞれ,’C’,’h’,’i’,’n’,’a’とし,演算を経てc 1,c 2,c 3,c 4,c 5をそれぞれ‘G’,’l’,’m’,’r’,’e’として出力するプログラムを編成してください.
三.実験の主な流れ、基本操作またはコアコード、アルゴリズムの断片(この部分が記入されていない場合は、別紙を添付してください)
実験二プログラムの構造実験
一.実験目的及び要求(1)if文の各種形式及びswitch文を含む分岐文の使用を理解し把握する.(2)循環文を用いて累乗、画像出力のプログラム作成を完了する.(3)複雑な構造プログラムの作成を把握する.(4)プログラムデバッグの方法を把握する.(5)実験報告書を作成する.二.実験内容(1)入力された学生の成績に基づいて成績等級の判断をしてください.判断ルールは以下の通りです.入力された成績が90以上であれば、出力が優秀です.入力された成績が90以上であれば、出力が良好です.入力された成績が80以下で、70以上であれば、出力は中等です.入力された成績が70以下で、60以上であれば、出力は合格です.その他の出力は不合格です.(2)xyz+yzz=532が知られており、x,y,zはいずれも数字(0~9)であり、1つのプログラムを記述してx,y,zがそれぞれどの数字を表すかを求める.(3)1つのプログラムを記述して次のような対称図形(行数がキーボードから1~9の範囲の値を入力)を印刷し、例えば以下が入力数字4の場合:4444444 33333 222 3333333 444444(4)5桁以下の整数を与え、1、それが何桁であるかを求める2、それぞれの数字を出力する3、逆順に各数字を出力する.例えば、原数321、123.3を出力すべきである.実験の主な流れ、基本操作またはコアコード、アルゴリズムの断片(この部分が記入されていない場合は、別途ページを添付してください)
じっけんさんかんすうじっけん
1、目的要求:(1)関数のプログラミング思想を学び、3~4個の関数を含むプログラムを作成する.(2)関数におけるパラメータ伝達の2つの方式と関数の相互呼び出しを把握する.(3)実験報告書を作成する.2、実験内容:(1)関数int digit(int n,int k)を書き、数nの右から左へのk番目の10進数字値を返す.たとえば、関数呼び出しdigit(1234,2)は値3を返します.(2)関数int isprime(int n)を書き、nが素数である場合、関数はゼロ以外の値を返す.nが合数である場合、関数はゼロ値を返します.(3)一つの数を左から右と右から左で読むと、数字が同じであれば、この数字を回文数と呼びます.例えば898、1221、15651はいずれも回文数です.求:回文数でも素数でもある5桁の10進数は何個ありますか.要求:回文判断と素数判断はいずれもサブ関数で実現し、出力するときは5個の数字の1行を要求します.(4)与えられた数nの乗算を求める関数を書き,その機能を再帰関数で実現しなければならない.
一.実験の主な流れ、基本操作またはコアコード、アルゴリズム断片(この部分が記入されていない場合は、別紙を添付してください)
じっけんしぶんれつじっけん
一.実験目的及び要求(1)一次元及び二次元配列の使用技術を習得する.(2)実験報告書を作成する.二.実験内容(1)キーボードから長さNを入力する(例えば10)の整数配列は、その後、配列内のゼロより小さい要素を配列の先端に移動し、ゼロより大きい要素を配列の後端に移動し、ゼロに等しい要素を配列の中間に残す.例えば、元の配列は:2-5-89 75 0-89 0 93 48 0であり、処理後の配列は:-5-89-89 0 0 0 0 75 93 48 2である.配列秩序が要求されないため、ソート側では許されない法.ヒント:1)N個のデータを入力し、配列を構築します.2)要求に応じてデータの位置を決定するには,ループ条件の決定,0データ要素の中間へのプッシュの実現過程,配列処理の方向に注意する必要がある.(2)配列aの定義は,int a[20]={2,4,6,8,10,12,14,16}とする.; 格納された配列のデータ値はすでに小さい順に格納されており、キーボードからデータを入力し、配列に挿入し、新しいデータを挿入した後も配列データは秩序を保っている.上記の機能を実現するプログラムを作成してください.ヒント:1)整数配列を定義して初期化します.2)キーボードからデータを入力します.3)このデータを配列に挿入するには,挿入された配列が秩序化されていることを保証するために,挿入された位置を検索する必要がある.4)挿入データ以降の配列を出力する.(3)プログラミングは入力10個の整数を実現し、それを降順に並べ替えて出力する(選択並べ替えアルゴリズムまたはバブル並べ替えアルゴリズムを使用することができる).(4)関数reverse(char s[])を書き、文字列s[]の文字列を逆順に出力する.再帰と非再帰の2つの形式でそれぞれ作成してみます.
三.実験の主な流れ、基本操作またはコアコード、アルゴリズムの断片(この部分が記入されていない場合は、別紙を添付してください)
実験五針実験
一.実験目的及び要求(1)ポインタを関数パラメータとして文字列の伝達を完了する.(2)関数におけるパラメータ伝達の二つの方式を把握する.(3)実験報告書を作成する.二.実験内容(1)関数char*delk(char*sp)を作成し、spが指す文字列のすべての「$」文字を削除し、処理後の文字列ポインタを返す.(2)関数int find(char*s 1,char*s 2)を書きます.関数findの機能は、列s 1に指定された語(s 2指向)が含まれているかどうかを検索し、存在する場合は1回目の出現位置を返し、そうでない場合は-1を返す.約束列の語は1つまたは1つ以上のスペースで区切られる.(3)書名ソートプログラムを作成し、10個の書名を入力して2次元配列を格納し、関数void sortstring(char name[][20],int n)辞書の順序出力を実現します.(4)A 123 cdf 456.78 cpc 876.9 er 849.1のような数字と非数字の文字列を入力し、連続する数字を実数として配列aに順次格納する.例えば123はa[0]、456.78はa[2]に格納する.を選択して、順番に類推し、合計何個の数を統計し、これらの数を出力します.三.実験の主な流れ、基本操作またはコアコード、アルゴリズムの断片(この部分が記入されていない場合は、別紙を添付してください)
実験五針実験
一.実験目的及び要求(1)構造体の定義、データ入力方法を把握する.(2)構造体メンバー変数の2種類のアクセス方法を把握する.(3)作成プログラムが単鎖表の作成と照会方法を完成することを把握する.(4)ファイルの開閉を把握する.(5)ファイルの読み書き操作を精通する.(6)ファイルの位置決め操作及びファイルの検出関数を理解する.(7)ファイルの応用を把握する.(8)実験報告書を作成する.二.実験内容(1)単一チェーンテーブルを作成する関数を作成し、チェーンテーブルのテーブル要素情報に学号、氏名、授業の成績が含まれるようにする.学号に従って学生の成績を調べる関数を書く.最後に主関数を書く.それはまず構築関数を呼び出し、クエリー関数(学号に基づいて学生を検索する)を呼び出し、学生の名前と成績が調べられたか、学生が見つからないことを示す.(2)(1)問題に基づいてチェーンテーブルの1つの学生ノードを削除する機能を加え,所定の学号の学生ノードを見つけてチェーンテーブルから削除する.(3)整数を格納するテキストファイルがあり、その数値を読み取り、奇数に1を加算し、偶数に1を減算した場合、新しいファイルに格納する.3.実験の主な流れ、基本操作またはコアコード、アルゴリズムセグメント(この部分が記入されていない場合は、別途ページを添付してください)
一.実験目的及び要求(1)C言語におけるデータ型の意味を理解する.(2)常用演算子の意味を理解する.(3)C言語表現式の実行規則を把握する.(4)実験報告書を作成する.
二.実験内容(1)キーボードから入力された2つの整数データを計算し、それらの平均値を求めて画面に出力する.(2)預金金額money、預金期間year、年利率rateを入力し、以下の式に従って預金満期時の利息interest(税引き前)を計算し、出力時に2桁の小数を保持する.interest=money(1+rate)year-money(3)は「China」例えば、アルファベット「A」の后ろの4番目のアルファベットは「E」です.「E」の代わりに「A」の后ろの4番目のアルファベットは「E」です.したがって、「China」は「Glmre」と訳される.初期値を付与する方法でcl,c 2,c 3,c 4,c 5の5つの変数の値をそれぞれ,’C’,’h’,’i’,’n’,’a’とし,演算を経てc 1,c 2,c 3,c 4,c 5をそれぞれ‘G’,’l’,’m’,’r’,’e’として出力するプログラムを編成してください.
三.実験の主な流れ、基本操作またはコアコード、アルゴリズムの断片(この部分が記入されていない場合は、別紙を添付してください)
#include
int main()
{int a,b;
float c;
printf(" :");
scanf("%d%d",&a,&b);
c=(float)(a+b)/2;
printf(" %.1f",c);
}
#include
#include
int main()
{
float money,year,rate;
printf(" , , :");
scanf("%f%f%f",&money,&year,&rate);
printf(" :%.2f",money*pow(1+rate,year)-money);
}
#include
int main(){
char c1='C',c2='h',c3='i',c4='n',c5='a';
printf("%c%c%c%c%c",c1+4,c2+4,c3+4,c4+4,c5+4);
}
#include
int main(){
char c1='C',c2='h',c3='i',c4='n',c5='a';
c1+=4;
c2+=4;
c3+=4;
c4+=4;
c5+=4;
printf("%c%c%c%c%c",c1,c2,c3,c4,c5);
}
#include
int main(){
char c1,c2,c3,c4,c5;
printf(" ");
scanf("%c%c%c%c%c",&c1,&c2,&c3,&c4,&c5);
if(c1>='W'&&c1<='Z')
{c1=c1-22;}else{ if(c1>='w'&&c1<='z')
{c1=c1-22;}else{c1+=4;}}
if(c2>='W'&&c2<='Z')
{c2=c2-22;}else{ if(c2>='w'&&c2<='z')
{c2=c2-22;}else{c2+=4;}}
if(c3>='W'&&c3<='Z')
{c3=c3-22;}else{if(c3>='w'&&c3<='z')
{c3=c3-22;}else{c3+=4;}}
if(c4>='W'&&c4<='Z')
{c4=c4-22;}else{ if(c4>='w'&&c4<='z')
{c4=c4-22;}else{c4+=4;}}
if(c5>='W'&&c5<='Z')
{c5=c5-22;}else{if(c5>='w'&&c5<='z')
{c5=c5-22;}else{c5+=4;}}
printf("%c%c%c%c%c",c1,c2,c3,c4,c5);
}
実験二プログラムの構造実験
一.実験目的及び要求(1)if文の各種形式及びswitch文を含む分岐文の使用を理解し把握する.(2)循環文を用いて累乗、画像出力のプログラム作成を完了する.(3)複雑な構造プログラムの作成を把握する.(4)プログラムデバッグの方法を把握する.(5)実験報告書を作成する.二.実験内容(1)入力された学生の成績に基づいて成績等級の判断をしてください.判断ルールは以下の通りです.入力された成績が90以上であれば、出力が優秀です.入力された成績が90以上であれば、出力が良好です.入力された成績が80以下で、70以上であれば、出力は中等です.入力された成績が70以下で、60以上であれば、出力は合格です.その他の出力は不合格です.(2)xyz+yzz=532が知られており、x,y,zはいずれも数字(0~9)であり、1つのプログラムを記述してx,y,zがそれぞれどの数字を表すかを求める.(3)1つのプログラムを記述して次のような対称図形(行数がキーボードから1~9の範囲の値を入力)を印刷し、例えば以下が入力数字4の場合:4444444 33333 222 3333333 444444(4)5桁以下の整数を与え、1、それが何桁であるかを求める2、それぞれの数字を出力する3、逆順に各数字を出力する.例えば、原数321、123.3を出力すべきである.実験の主な流れ、基本操作またはコアコード、アルゴリズムの断片(この部分が記入されていない場合は、別途ページを添付してください)
#include
void main()
{
int a;
printf(" :");
scanf("%d",&a);
if(a>=90){
printf(" ");
}else if(a>=80){
printf(" ");
}else if(a>=70){
printf(" ");
}else if(a>=60){
printf(" ");
}else{
printf(" ");
}
}
#include
int main()
{
int a;
printf(" :");
scanf("%d",&a);
switch(a/10)
{
case 10:printf("
");break;
case 9: break;
case 8:printf("
");break;
case 7:printf("
");break;
case 6:printf("
");break;
case 5:
case 3:
case 2:
case 1:
case 0:printf("
");break;
default:printf("
");
}
return 0
}
#include
void main()
{
int x,y,z;
for(x=1;x<=10;x++)
for(y=1;y<=10;y++)
for(z=1;z<=10;z++)
if(x*100+y*10+z+y*100+z*10+z==532){
printf("%4d%4d%4d",x,y,z);
}
#include
void main()
{
int n,x,y;
printf(" 1~9
");
scanf("%d",&n);
/* */
for(x=n;x>=1;x--)/* */
{
for(y=0;y<n-x;y++)
{
printf(" ");
}/* */
for(y=0;y<2*x-1;y++)
{
printf("%d",x);
}/* */
printf("
");/* */
}
/* */
/* */
for(x=2;x<=n;x++)
{
for(y=0;y<n-x;y++)
{
printf(" ");
}
for(y=0;y<2*x-1;y++)
{
printf("%d",x);
}
printf("
");
}
}
#include
void main()
{
int x,a,b,c,d,e;
printf(" 5 :");
scanf("%d",&x);
a=x/10000;
b=(x/1000)%10;
c=(x/100)%10;
d=(x/10)%10;
e=x%10;
if(x/10000>=1){
printf(" :");
printf("%4d",a);
printf("%4d",b);
printf("%4d",c);
printf("%4d",d);
printf("%4d",e);
printf(" :%d",e*10000+d*1000+c*100+b*10+a);
} else if(x/1000>=1){
printf(" :");
printf("%4d",b);
printf("%4d",c);
printf("%4d",d);
printf("%4d",e);
printf(" :%d",e*1000+d*100+c*10+b);
} else if(x/100>=1){
printf(" :");
printf("%4d",c);
printf("%4d",d);
printf("%4d",e);
printf(" :%d",e*100+d*10+c);
} else if(x/10>=1){
printf(" :");
printf("%4d",d);
printf("%4d",e);
printf(" :%d",e*10+d);
} else if(x>=1){
printf(" :");
printf("%d",e);
printf(" :%d",e);
}
}
じっけんさんかんすうじっけん
1、目的要求:(1)関数のプログラミング思想を学び、3~4個の関数を含むプログラムを作成する.(2)関数におけるパラメータ伝達の2つの方式と関数の相互呼び出しを把握する.(3)実験報告書を作成する.2、実験内容:(1)関数int digit(int n,int k)を書き、数nの右から左へのk番目の10進数字値を返す.たとえば、関数呼び出しdigit(1234,2)は値3を返します.(2)関数int isprime(int n)を書き、nが素数である場合、関数はゼロ以外の値を返す.nが合数である場合、関数はゼロ値を返します.(3)一つの数を左から右と右から左で読むと、数字が同じであれば、この数字を回文数と呼びます.例えば898、1221、15651はいずれも回文数です.求:回文数でも素数でもある5桁の10進数は何個ありますか.要求:回文判断と素数判断はいずれもサブ関数で実現し、出力するときは5個の数字の1行を要求します.(4)与えられた数nの乗算を求める関数を書き,その機能を再帰関数で実現しなければならない.
一.実験の主な流れ、基本操作またはコアコード、アルゴリズム断片(この部分が記入されていない場合は、別紙を添付してください)
#include
int digit( int n , int k )
{
int j;
while(n/10!=0)
{
for(j=2;j<=k;j++)
{
n=n/10;
}
n=n%10;
}
return n;
}
#include
int isprime(int n)
{
int i;
for(i=2;i<=sqrt(n);i++)
{
if (n%i == 0)
{
return 0;
}
}
return 1;
}
#include
#include
int isprime(int n);
int digit( int n , int k );
int main()
{
int t;
for(t=10000;t<=99999;t++)
{
if((digit(t,1)==digit(t,5))&&(isprime(t)==1)&&(digit(t,2)==digit(t,4)))
printf("%d
",t);
}
}
int digit( int n , int k )/* */
{
int j;
while(n/10!=0)
{
for(j=2;j<=k;j++)
{
n=n/10;
}
n=n%10;
}
return n;
}
int isprime(int n)/* */
{
int i;
for(i=2;i<=sqrt(n);i++)
{
if (n%i == 0)
{
return 0;
}
}
return 1;
}
#include
long f(int n)
{
if(n<0)
return -1;
else if (n==0||n==1)
return 1;
else
return (n*f(n-1));
}
じっけんしぶんれつじっけん
一.実験目的及び要求(1)一次元及び二次元配列の使用技術を習得する.(2)実験報告書を作成する.二.実験内容(1)キーボードから長さNを入力する(例えば10)の整数配列は、その後、配列内のゼロより小さい要素を配列の先端に移動し、ゼロより大きい要素を配列の後端に移動し、ゼロに等しい要素を配列の中間に残す.例えば、元の配列は:2-5-89 75 0-89 0 93 48 0であり、処理後の配列は:-5-89-89 0 0 0 0 75 93 48 2である.配列秩序が要求されないため、ソート側では許されない法.ヒント:1)N個のデータを入力し、配列を構築します.2)要求に応じてデータの位置を決定するには,ループ条件の決定,0データ要素の中間へのプッシュの実現過程,配列処理の方向に注意する必要がある.(2)配列aの定義は,int a[20]={2,4,6,8,10,12,14,16}とする.; 格納された配列のデータ値はすでに小さい順に格納されており、キーボードからデータを入力し、配列に挿入し、新しいデータを挿入した後も配列データは秩序を保っている.上記の機能を実現するプログラムを作成してください.ヒント:1)整数配列を定義して初期化します.2)キーボードからデータを入力します.3)このデータを配列に挿入するには,挿入された配列が秩序化されていることを保証するために,挿入された位置を検索する必要がある.4)挿入データ以降の配列を出力する.(3)プログラミングは入力10個の整数を実現し、それを降順に並べ替えて出力する(選択並べ替えアルゴリズムまたはバブル並べ替えアルゴリズムを使用することができる).(4)関数reverse(char s[])を書き、文字列s[]の文字列を逆順に出力する.再帰と非再帰の2つの形式でそれぞれ作成してみます.
三.実験の主な流れ、基本操作またはコアコード、アルゴリズムの断片(この部分が記入されていない場合は、別紙を添付してください)
#include
void main()
{
int a[10]={0};
int b[10]={0};
int i=0;
int j=0;
int k=9;
int s=0;
for(i=0;i<10;i++)
{
scanf("%d",&a[i]);
}
for(i=0;i<10;i++)
{
if(a[i]<0)
{
b[j]=a[i];
j++;
}
else if(a[i]>0)
{
b[k]=a[i];
k--;
}
}
for(s=0;s<10;s++)
{
printf("%3d",b[s]);
}
}
#include
int main()
{
int a[20]={2,4,6,8,10,12,14,16};
int b[20]={0};
int n=0;
int m=0;
int i=0;
int t=0;
int j=0;
scanf("%d",&n);
for(i=0;i<20;i++)
{
if(a[i]>n)
{
m=i;
break;
}
}
for(j=0,i=0;j<m;j++,i++)
{
b[j]=a[i];
}
for(j=m+1,i=m;j<20;j++,i++)
{
b[j]=a[i];
}
b[m]=n;
for(i=0;i<20;i++)
{
printf("%3d",b[i]);
}
}
#include
int main()
{
int a[10]={0};
int t=0;
int i=0;
int j=0;
for(i=0;i<10;i++)
{
scanf("%d",&a[i]);
}
for(i=0;i<10;i++)
{
for(j=i+1;j<10;j++)
{
if(a[j]>a[i])
{
t=a[j];
a[j]=a[i];
a[i]=t;
}
}
}
for(i=0;i<10;i++)
{
printf("%4d",a[i]);
}
}
void reverse( char s[]) {
int n;
n=strlen(s);
if(n==1) {
printf("%c ",s[0]);
return }
printf("%c ",s[n-1]);
s[n-1]='\0';
reverse(s); }
:
void reverse( char s[]) {
int n;
int i,j;
char temp;
n=strlen(s);
if(n==1) {
printf("%c ",s[0]); return
}
for(i=0;i<n;i++) {
temp=s[i];
s[i]=s[n-1-i];
s[n-1-i]=temp;
}
for(i=0;i<n;i++)
{
printf("%c ",s[i]); }
}
実験五針実験
一.実験目的及び要求(1)ポインタを関数パラメータとして文字列の伝達を完了する.(2)関数におけるパラメータ伝達の二つの方式を把握する.(3)実験報告書を作成する.二.実験内容(1)関数char*delk(char*sp)を作成し、spが指す文字列のすべての「$」文字を削除し、処理後の文字列ポインタを返す.(2)関数int find(char*s 1,char*s 2)を書きます.関数findの機能は、列s 1に指定された語(s 2指向)が含まれているかどうかを検索し、存在する場合は1回目の出現位置を返し、そうでない場合は-1を返す.約束列の語は1つまたは1つ以上のスペースで区切られる.(3)書名ソートプログラムを作成し、10個の書名を入力して2次元配列を格納し、関数void sortstring(char name[][20],int n)辞書の順序出力を実現します.(4)A 123 cdf 456.78 cpc 876.9 er 849.1のような数字と非数字の文字列を入力し、連続する数字を実数として配列aに順次格納する.例えば123はa[0]、456.78はa[2]に格納する.を選択して、順番に類推し、合計何個の数を統計し、これらの数を出力します.三.実験の主な流れ、基本操作またはコアコード、アルゴリズムの断片(この部分が記入されていない場合は、別紙を添付してください)
#include
char *delk( char *sp)
{
char b[100]={0};
int i=0;
char *pb=b;
while(*sp!='\0')
{
if(*sp!='$')
{
b[i]=*sp;
i++;
}
sp++;
}
b[i]='\0';
return pb;
}
int main()
{
char a[100];
gets(a);
getchar();
printf("%s", delk(a));
}
#include
#include
int find(char* s1,char* s2)
{
int i=0;
int len1 = strlen(s1);
int len2 = strlen(s2);
int j=0;
if(len1-len2<0) return -1;
for(;i<len1-len2;i++)
{
int m = i;
for(j=0;j<len2;j++)
{
if(s1[m]!=s2[j])
break;
m++;
}
if(j==len2)
break;
}
return i<len1-len2?i-1:-1;
}
int main()
{
char a[]="abdzgadgdvnjc";
char b[]="a";
printf("%d",find(a,b));
}
#include
#include
void sortstring( char name[][20] , int n)
{
int i,j;
char temp[20];
for(i=0;i<n-1;i++)
{
for(j=i+1;j<n;j++)
{
if(strcmp(name[j],name[i])<0)
{
strcpy(temp,name[i]);
strcpy(name[i],name[j]);
strcpy(name[j],temp);
}
}
}
}
int main()
{
char a[3][20];
int n=3,i;
for(i=0;i<n;i++)
{
gets(a[i]);
}
sortstring(a,n);
for(i=0;i<n;i++)
{
puts(a[i]);
}
return 0;
}
#include
#include
#include
int main()
{
char a[]="A123cdf 456.78cpc876.9er 849.1";
char b[100][20]={0};
int i=0,j=0,k=0;
while(a[i]!='\0')
{
if(isdigit(a[i])||(isdigit(a[i+1])&&a[i]=='.'))
// '.' ,
{
b[j][k]=a[i];
k++;
if(isdigit(a[i])&&(isdigit(a[i+1])==0))
// , '\0'
{
b[j][k+1]='\0';
}
}
if((isdigit(a[i])&&(isdigit(a[i+1])==0&&a[i+1]!='.')))
// , '.' ,
{
j++;
k=0;
}
i++;
}
printf("%d
",j);
for(i=0;i<=j;i++)
{
printf("%s
",b[i]);
}
}
実験五針実験
一.実験目的及び要求(1)構造体の定義、データ入力方法を把握する.(2)構造体メンバー変数の2種類のアクセス方法を把握する.(3)作成プログラムが単鎖表の作成と照会方法を完成することを把握する.(4)ファイルの開閉を把握する.(5)ファイルの読み書き操作を精通する.(6)ファイルの位置決め操作及びファイルの検出関数を理解する.(7)ファイルの応用を把握する.(8)実験報告書を作成する.二.実験内容(1)単一チェーンテーブルを作成する関数を作成し、チェーンテーブルのテーブル要素情報に学号、氏名、授業の成績が含まれるようにする.学号に従って学生の成績を調べる関数を書く.最後に主関数を書く.それはまず構築関数を呼び出し、クエリー関数(学号に基づいて学生を検索する)を呼び出し、学生の名前と成績が調べられたか、学生が見つからないことを示す.(2)(1)問題に基づいてチェーンテーブルの1つの学生ノードを削除する機能を加え,所定の学号の学生ノードを見つけてチェーンテーブルから削除する.(3)整数を格納するテキストファイルがあり、その数値を読み取り、奇数に1を加算し、偶数に1を減算した場合、新しいファイルに格納する.3.実験の主な流れ、基本操作またはコアコード、アルゴリズムセグメント(この部分が記入されていない場合は、別途ページを添付してください)
#include
#include
#include
struct link
{
long number;
char name[20];
int socer;
struct link *next;
};
struct link *add(struct link *head);
//
void search(struct link*head ,long number);
//
void displynode(struct link*head);
//
void deletememory(struct link*head);
// ,
int main()
{
int n,i=0;
long num;
struct link *head=NULL;
printf("How many students?
");
scanf("%d",&n);
for(i=0;i<n;i++)
{
head=add(head);
}
displynode(head);
printf("input number which you want to search:
");
scanf("%ld",&num);
search(head,num);
deletememory(head);
}
struct link* add(struct link*head)
{
struct link*p=NULL,*pr=head;
long number;
char name[20];
int socer;
p=(struct link*)malloc(sizeof(struct link));
if(p==NULL)
{
printf("no enough memory to allocate!
");
exit(0);
}
if(head==NULL)
{
head=p;
}
else
{
while(pr->next!=NULL)
{
pr=pr->next;
}
pr->next=p;
}
printf("input student's number,name,socer:
");
scanf("%ld%s%d",&number,&name,&socer);
p->number=number;
strcpy(p->name,name);
p->socer=socer;
p->next =NULL;
return head;
}
void search(struct link*head ,long number)
{
struct link*p=head,*pr=head;
if(head==NULL)
{
printf("
");
}
while(number!=p->number&&p->next!=NULL)
{
pr=p;
p=p->next;
}
if(number==p->number)
{
printf("%ld\t%s\t%d
",number,p->name,p->socer);
}
else
{
printf("
");
}
}
void displynode(struct link*head)
{
struct link*p=head,*pr=NULL;
int j=1;
while(p!=NULL)
{
printf("%d\t%ld\t%s\t%d
",j,p->number,p->name,p->socer);
p=p->next;
j++;
}
}
void deletememory(struct link*head)
{
struct link*p=head,*pr=NULL;
while(p!=NULL)
{
pr=p;
p=p->next;
free(pr);
}
}
#include
#include
#include
struct link
{
long number;
char name[20];
int socer;
struct link *next;
};
struct link *add(struct link *head);
//
void search(struct link*head ,long number);
//
struct link* deletnode(struct link*head,long number);
//
void displynode(struct link*head);
//
void deletememory(struct link*head);
// ,
int main()
{
int n,i=0;
long num;
struct link *head=NULL;
printf("How many students?
");
scanf("%d",&n);
for(i=0;i<n;i++)
{
head=add(head);
}
displynode(head);
printf("input student's number which you want to search:
");
scanf("%ld",&num);
search(head,num);
printf("which student's number want to delet?
");
scanf("%ld",&num);
head=deletnode(head,num);
displynode(head);
deletememory(head);
}
struct link* add(struct link*head)
{
struct link*p=NULL,*pr=head;
long number;
char name[20];
int socer;
p=(struct link*)malloc(sizeof(struct link));
if(p==NULL)
{
printf("no enough memory to allocate!
");
exit(0);
}
if(head==NULL)
{
head=p;
}
else
{
while(pr->next!=NULL)
{
pr=pr->next;
}
pr->next=p;
}
printf("input student's number,name,socer:
");
scanf("%ld%s%d",&number,&name,&socer);
p->number=number;
strcpy(p->name,name);
p->socer=socer;
p->next =NULL;
return head;
}
void search(struct link*head ,long number)
{
struct link*p=head,*pr=head;
if(head==NULL)
{
printf("
");
}
while(number!=p->number&&p->next!=NULL)
{
pr=p;
p=p->next;
}
if(number==p->number)
{
printf("%ld\t%s\t%d
",number,p->name,p->socer);
}
else
{
printf("
");
}
}
struct link*deletnode(struct link*head,long number)
{
struct link*p=head,*pr=head;
if(head==NULL)
{
printf("
");
return (head);
}
while(number!=p->number&&p->next!=NULL)
{
pr=p;
p=p->next;
}
if(number==p->number)
{
if(p==head)
{
head=p->next;
}
else
{
pr->next=p->next;
}
free(p);
}
else
{
printf("
");
}
return head;
}
void displynode(struct link*head)
{
struct link*p=head,*pr=NULL;
int j=1;
while(p!=NULL)
{
printf("%d\t%ld\t%s\t%d
",j,p->number,p->name,p->socer);
p=p->next;
j++;
}
}
void deletememory(struct link*head)
{
struct link*p=head,*pr=NULL;
while(p!=NULL)
{
pr=p;
p=p->next;
free(pr);
}
}
#include
#include // exit
int main()
{
FILE *fp;
int a[100];
int i=0;
int flag=0;
if((fp=fopen(" 1.txt","r"))==NULL)
{
printf("Failure to open 1.txt!
");
exit(0);
}
while(!feof(fp))
{
fscanf(fp,"%d",&a[i]);
i++;
}//
a[i]=0;// feof 0;
fclose(fp);//
for(i=0;a[i]!=0;i++)
{
if(a[i]%2==1)
{
a[i]+=1;
}
else
{
a[i]-=1;
}
}//
FILE *fp1;// ,
if((fp1=fopen(" 2.txt","w"))==NULL)
{
printf("Failure to open 1.txt!
");
exit(0);
}
for(i=0;a[i]!=0;i++)
{
fprintf(fp1,"%4d",a[i]);
}
fclose(fp1);
}