当前位置:文档之家› C语言实验报告 C

C语言实验报告 C

}} int main() { char text[10]={'a','b','c','d','e','f','g','h','m','o'};
int i,n=10; for(i=0;i<n;i++) { printf("%c ",text[i]); } printf("\n"); printf("倒序为:\n"); reverse(text); }
} return 1; } main() { int r; r = isprime(5); printf("%d\n",r); r = isprime(8); printf("%d\n",r); }
(3)写一个函数 reverse( char s[]),将字符串 s[]中的字符串倒序输出。试分别用递归和非
返回零值。
(3)写一个函数 reverse( char s[]),将字符串 s[]中的字符串倒序输出。试分别用递归和非递
归两种形式编写。
(4)写一个主函数输入测试数据(自己指定),并调用上述函数,检查函数功能的正确性。
(5)一个数如果从左到右和从右到左读,数字是相同的,则称这个数字为回文数,比如 898、
找来实现这一查找过程。
提示:采用二分法求解本问题的基本思路是:设数列为 a1,a2,…,an,被查找的数为 x, 则查找首先对 am(m = ( n + 1 ) / 2)进行,于是得到三种情形。
若 x > am,则 x 只可能在区间[am + 1 , an] 若 x < am,则 x 只可能在区间[a1 , am - 1]

if(hw(i)) { if(isprime(i)==1) { cnt++; } } } printf("\n 合计:%d 个\n",cnt); } int isprime(int n) { int i=2; while(i<=sqrt(n)) {
if(n%i==0) return 0; i++; } return 1; } int hw(int n) { int m=0; int t=n; while(t) { m=m*10+t%10; t/=10; } return m==n; }
递归两种形式编写。
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]); } }
(2)掌握函数中参数传递的两种方式和函数的相互调用。
(3)编写实验报告。
2、实验内容(参考实验指导书):
(1)写一个函数 int digit( int n , int k ),它返回数 n 的从右向左的第 k 个十进数字值。例如,
函数调用 digit(1234,2)将返回值 3。
(2)写一个函数 int isprime(int n),当 n 是质数时,函数返回非零值;当 n 是合数时,函数
(2)写一个函数 int isprime(int n),当 n 是质数时,函数返回非零值;当 n 是合数时,函
数返回零值。
#include <stdio.h> int isprime(int n) { int i; if(n==1) { return 0; } for(i=2;i<=n-1;i++){ if(n%i==0){ return 0; }
(5)在 n 个已排好序(设为从小到大)的数据(数或字符串)中查找某一个数据,如果找 到了,就指出其在 n 个数中的位置;否则给出无该数据的信息。请用递归的方法实现二分 查找来实现这一查找过程。
提示:采用二分法求解本问题的基本思路是:设数列为 a1,a2,…,an,被查找的数为 x, 则查找首先对 am(m = ( n + 1 ) / 2)进行,于是得到三种情形。
若 x = am,则 am 即为查找的数,求解结束。
从上面的分析发现,这个过程很适合用递归来实现。
一.实验主要流程、基本操作或核心代码、算法片段(该部分如不够填写,请另加附页) (1)写一个函数 int digit( int n , int k ),它返回数 n 的从右向左的第 k 个十进数字值。 例如,函数调用 digit(1234,2)将返回值 3。
(4)写一个主函数输入测试数据(自己指定),并调用上述函数,检查函数功能的正确性。
一个数如果从左到右和从右到左读,数字是相同的,则称这个数字为回文数,比如 898、1221、
15651 都是回文数。求:既是回文数又是质数的 5 位十进制数有多少个?要求:回文判断和
质数判断都需要通过子函数实现,输出的时候要求 5 个数字一行。
实验编号: 05 四川师大
实验报告 2016 年 月 日
计算机科学学院 级 06 班 实验名称:
姓名:仁青拉初_______
学号:2014110637
函数
_
指导老师:_刘洪_
实验成绩:_____
实验五 函数 实验
( 验证性 综合性 实验
4 学时)
1、目的要求:
(1)学习函数的编程思想,编写一个包括 3~4 个函数的程序。
1221、15651 都是回文数。求:既是回文数又是质数的 5 位十进制数有多少个?要求:回文
判断和质数判断都需要通过子函数实现,输出的时候要求 5 个数字一行。
(5)在 n 个已排好序(设为从小到大)的数据(数或字符串)中查找某一个数据,如果找
到了,就指出其在 n 个数中的位置;否则给出无该数据的信息。请用递归的方法实现二分查
#include<stdio.h> #include<string.h> void reverse( char s[]) { int n; n=strlen(s); if(n==1) { printf("%c ",s[0]); return 0; } printf("%c ",s[n-1]); s[n-1]='\0'; reverse(s); } int main() { char text[10]={'a','b','c','d','e','f','g','h','m','o'}; int i,n=10; for(i=0;i<n;i++) { printf("%c ",text[i]); } printf("\n"); printf("倒序为:\n"); reverse(text); } 非递归: #include<stdio.h> #include<string.h>
若 x > am,则 x 只可能在区间[am + 1 , an] 若 x < am,则 x 只可能在区间[a1 , am - 1] 若 x = am,则 am 即为查找的数,求解结束。 从上面的分析发现,这个过程很适合用递归来实现。 #include <stdio.h> #include<math.h> int hw(int n); int isprime(int n); void main() { int i; int cnt=0; for(i=10000;i<100000;i++) {
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]);
二.实验结果的分析与评价(该部分如不够填写,请另加附页)
掌握了函数中参数传递的两种方式和函数的相互调用
注:实验成绩等级分为(90-100 分)优,(80-89 分)良,(70-79 分)中,(60-69 分)及 格,(59 分)不及格。
#include <stdio.h> int digit(int n,int k) { int i; int m; for(i=0;i<k;i++) { m= n%10; n=n/10; } return m; } main() { int x; x = digit(1234,2); printf("%d\n",x); }
相关主题