大学一年级下学期C语言程序设计实验报告答案完整版 下载本文

优秀学习资料 欢迎下载

(2)掌握函数中参数传递的两种方式和函数的相互调用。 (3)编写实验报告。

2、实验内容(参考实验指导书):

(1)写一个函数int digit( int n , int k ),它返回数n的从右向左的第k个十进数字值。例如,函数调用digit(1234,2)将返回值3。

#include void digit(int n,int k); main() {

int x,y;

printf(\请输入一个数据\\n\ scanf(\ digit(x,y); }

void digit(int n,int k) {

int i,j,a,b; b=n; a=(n/10); j=(n/100); i=(n/1000);

n=1000*i+100*j+10*a+b; if(k==1)

printf(\ else if(k==2)

printf(\ else if(k==3)

printf(\ else if(k==4)

printf(\}

(2)写一个函数int isprime(int n),当n是质数时,函数返回非零值;当n是合数时,函数返回零值。

优秀学习资料 欢迎下载

#include #include int isprime(int n); main() {

int x;

printf(\请输入一个整 数\\n\

scanf(\

printf(\ }

int isprime(int n) {

int i=2;

while(i

if(n%i==0) return 0; i++; }

return 1; }

(3)写一个函数reverse( char s[]),将字符串s[]中的字符串倒序输出。试分别用递归和非递归两种形式编写。 递归型:

#include #include

void res(char s[],int len); void reverse(char b[]); void main() {

char a[100];

printf(\请输入一串字符:\\n\gets(a); reverse(a);

优秀学习资料 欢迎下载

printf(\}

void res(char s[],int len) {

if(len>=0) {

printf(\ len--; res(s,len); } }

void reverse(char b[]) {

res(b,strlen(b)); }

非递归型:

#include void reverse(char s[]); void main() {

char s[100];

printf(\请输入一串字符\\n\ gets(s); reverse(s); printf(\}

void reverse(char s[]) {

int j,i=0; do {

i++;

}while(s[i]!='\\0'); for(j=i-1;j>=0;j--) printf(\}

优秀学习资料 欢迎下载

(4)写一个主函数输入测试数据(自己指定),并调用上述函数,检查函数功能的正确性。 判断奇偶性:

#include int parity(int n); void main() { }

int parity(int n) { }

if(n%2==0)

printf(\int x;

printf(\scanf(\parity(x);

else

printf(\

return 0;

优秀学习资料 欢迎下载

(5)一个数如果从左到右和从右到左读,数字是相同的,则称这个数字为回文数,比如898、1221、15651都是回文数。求:既是回文数又是质数的5位十进制数有多少个?要求:回文判断和质数判断都需要通过子函数实现,输出的时候要求5个数字一行。

#include #include int hw(int n); int isprime(int n); void main() {

int i; int cnt=0;

for(i=10000;i<100000;i++) {

if(hw(i)) {

if(isprime(i)==1) {

cnt++;

printf(\ } } }

printf(\合计:%d个\\n\}

int isprime(int n) {

int i=2;

while(i

if(n%i==0) return 0; i++; }

return 1; }

int hw(int n) {

int m=0; int t=n;