c语言单元二实验报告,C语言第七次实验报告
C程序設計實驗報告
姓名:林世龍? 實驗地點:學校 實驗時間:2020.06.03
實驗項目
8.31.指針基礎及指針運算
8.3.2.數據交換
8.3.3.字符串反轉及字符串連接
8.3.4.數組元素奇偶排列
一、實驗目的與要求
1、加強對學生對指針數據類型的理解,熟悉指針的定義、通過指針間接訪問變量的方法。
2、加強對指針類型作為函數參數傳遞的理解。
3、加強對字符指針及將指針作為函數的返回類型的理解,并通過指針對字符串進行操作。
4、加強對使用指針對數組進行操作的理解,通常數組的名稱即整個數組的起始存儲地址。
二、實驗內容
8.3.1.指針基礎及指針運算
1.問題的簡單描述:定義整型指針變量p,使之指向整型變量a;定義浮點型指針q,使之指向浮點變量b,同時定義另外一個整型變量c并賦初值3。使用指針p,q輸入a,b表達值;通過指針p,q間接輸出a,b的值;輸出p,q的值及c的地址。
2、實驗代碼:
#include
int main()
{
int *p,a,c=3;
float *q,b;
p=&a;
q=&b;
printf("Please Input the Value of a,b: ");
scanf("%d%f",p,q);
printf("Result: \n");
printf("%d,%f\n",a,b);
printf("%d,%f\n",*p,*q);
printf("The Address of a,b:%p,%p\n",&a,&b);
printf("The Address of a,b:%p,%p\n",p,q);
p=&c;
printf("c=%d\n ",*p);
printf("The Address of c:%x,%x\n",p,&c);
return 0;
}
3、問題分析:無
8.3.2.數據交換
1問題的簡單描述:從主函數中調用swap1和swap2函數,并打印輸出交換后a、b的結果。
2實驗代碼:
#include
void swap1(int x,int y);
void swap2(int *x,int *y);
int main()
{
int a,b;
printf("Please Input a=:");
scanf("%d",&a);
printf("\nb=:");
scanf("%d",&b);
swap1(a,b);
printf("\nAfter Call swap1:a=%d,b=%d\n",a,b);
swap2(&a,&b); //指針作為形參,實參須為地址
printf("\nAfter Call swap2:a=%d,b=%d\n",a,b);
return 0;
}
void swap1(int x,int y)
{
int temp;
temp=x;
x=y;
y=temp;
}
void swap2(int*x,int *y)
{
int temp;
temp=*x;
*x=*y;
*y=temp;
}
3問題分析:當指針作為形式參數時,實際參數為地址
8.3.3.字符串反轉及字符串連接
1問題的簡單描述:定義兩個字符指針,通過指針移動方式將字符串反轉以及將兩個字符串連接起來。
2實驗代碼:
#include
char *reverse(char *str);
char *link(char *str1,char *str2);
int main()
{
char str[30],str1[30],*str2;
printf("Input Reversing Character String:");
gets(str);
str2=reverse(str);
printf("\nOutput Reversed Characyer String:");
puts(str2);
printf("Input string1:");
gets(str);
printf("\nInput string2:");
gets(str1);
str2=link(str,str1);
puts(str2);
return 0;
}
char *reverse(char *str)
{
char *p,*q,temp;
p=str,q=str;
while(*p!='\0')
p++;
p--;
while(q
{
temp=*q;
*q=*p;
*p=temp;
p--;
q++;
}
return str;
}
char *link(char *str1,char *str2)
{
char *p=str1,*q=str2;
while(*p!='\0')
p++;
while(*q!='\0')
{
*p=*q;
p++;
q++;
}
*p='\0';
return str1;
}
3問題分析:剛開始對指針移動內容不太明白,后來經過老師講解之后明白了
8.3.4.數組元素奇偶排列
1.問題的簡單描述:定義一個函數,實現數組元素奇數在左、偶數在右。
2實驗代碼:
#include
#define N 10
void arrsort(int a[],int n);
int main()
{
int a[N],i;
for(i=0;i
scanf("%d",&a[i]);
arrsort(a,N);
for(i=0;i
printf("%d ",a[i]);
}
void arrsort(int a[],int n)
{
int *p,*q,temp;
p=a;
q=a+n-1;
while(p
{
while(*p%2!=0)
p++;
while(*q%2==0)
q--;
if(p>q)
break;
temp=*p;
*p=*q;
*q=temp;
p++;
q--;
}
}
3問題分析:無
三、實驗小結
指針這個單元學習的有點困難,沒有書的模板根本做不出來,還有很多知識點需要自己多花時間消化學習。
來源:https://www.cnblogs.com/zql1228687135/p/13063822.html
總結
以上是生活随笔為你收集整理的c语言单元二实验报告,C语言第七次实验报告的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: c语言选择菜单程序设计,c语言课程设计报
- 下一篇: 中专计算机专业学c语言吗,中专计算机专业