You are on page 1of 8

徐州工程学院

《程序设计基础》
实验报告
(2019-2020 学年 第 一 学期)

课程名称 程序设计基础
开课学院 信电工程学院
指导教师 陆杨
学生学号 20190505224
学生姓名 彭博
专业班级 19 计嵌 2

姓 名 彭博 班 级 19 计嵌 2 学 号 20190505224

时 间 11.13 地 点 敬信楼 501

实验名称 实验五 学 时 2
实验题目 1:编写函数 itob(n,s,b),用于把整数 n 转换成以 b 为基的字符串并存
储到 s 中. 编写程序,使用函数 itob(n,s,b)将输入的整数 n,转换成字符串 s,
将 s 输出.转换后的字符串从最高的非零位开始输出。如果 n 为负数,则输出的
字符串的第一个字符为’-’。b 为大于 1 小于 37 的任意自然数值。当 b=2 时,输
出 字 符 只 可 能 是 ’ 0’ 和 ’ 1’ ; 当 b=16 时 , 输 出 字 符 串 中 可 能 含 有 字 符
为’0’-’9’,’a’-’f’(字母以小写输出)。b 还可以是其它数值。比如输
入 n=33,b=17,则输出 33 的 17 进制值为"1g"。
源代码:#include <stdio.h>

#define flag0 0

#define flag1 1

int main()

int n,b;

char s[32];

scanf("%d %d",&n,&b);

atob(n,s,b);

printf("%s",s);

int atob(int n, char *s, int b)

int i=0,j=0,t=0,flag2=flag1;

if( n<0 )

n=0-n;

flag2=flag0;

do{

s[i++]=n%b+'0';

if ( s[i-1]>'9' ) {

s[i-1]+='a'-'9'-1;

}
}while (( n/=b )>0);

if ( flag2==flag0 ) {

s[i++]='-';

s[i]='\0';

for ( i=i-1; i>j;i--,j++ ) {

t=s[i];

s[i]=s[j];

s[j]=t;

return 0;

运行结果截图:

实验题目 2:删除字符串中的字符。输入一个字符串 s,再输入一个字符 c,将字


符串 s 中出现的所有字符 c 删除。要求定义并调用函数 delchar(s,c),它的功能
是将字符串 s 中出现的所有 c 字符删除。
源代码:#include <stdio.h>

#include <string.h>

#define N 1024

void delchar( char s[],char c )

int i,j,len;

i=0;

while(s[i]!='\0'){

if(s[i] == c){

for(j=i+1;s[j]!='\0';j++)

s[j-1]=s[j];

s[j-1]='\0';

i=0;

else

i++;

int main()

char str[N],ch;

printf("Input a string:");

gets(str);

printf("Input a char:");

ch=getchar();

delchar(str,ch);

printf("After deleted,the string is:%s\n",str);

return 0;
}

运行结果截图:

实验题目 3:字符串复制。输入一个字符串 t 和一个正整数 m,将字符串 t 中从第


m 个字符开始的全部字符复制到字符串 s 中,再输出字符串 s。要求用字符指针
定义并调用函数 strmcpy(s,t,m),它的功能是将字符串 t 中从第 m 个字符开
始的全部字符复制到字符串 s 中。
源代码:#include<stdio.h>
#include<string.h>
void strmcpy(char *s,char *t,int m)
{
int i,n;
for( i=0;i<m-1;i++,*t++ );
strcpy( s,t );
}

void main()
{
char s[100],t[100];
int m;
printf("Input a string:");
gets(t);
printf("Input an integer:");
scanf("%d",&m);
strmcpy(s,t,m);
if(t=='\0')
{
printf("Output is:'0'\n");
}else
{
printf("Output is:");
puts(s);
}
}
运行结果截图:

实验题目 4:输入两个正整数 m 和 n(m&ge;1,n&le;500),输出 m 和 n 之间的所


有素数,每行输出 6 个。素数是指只能被 1 和自身整除的正整数,最小的素数是
2。(使用函数调用)
源代码:#include<stdio.h>

#include<math.h>

int main(){

int m=0,n=0,i,l=0;

do{

printf("Input m: ");
scanf("%d",&m);

printf("Input n: ");

scanf("%d",&n);

} while(( m<1||n>500 )||m>n);

for( i=m;i<=n;i++ )

if( s(i) )

printf("%4d",i);

if( ++l%6==0 )

printf("\n");

int s( int n )

if( n==1 ) return 0;

if( n==2||n==3 ) return 1;

if( n%2==0 ) return 0;

int i=3;

for( i=3;i<=sqrt(n);i+=2 )

if( n%i==0 )

return 0;

return 1;

运行结果截图:
二、实验总结(包括问题和解决方法、心得体会、意见与建议等)
无法熟练掌握各种算法的使用。
应打好基础,多练题目,多编一些基础代码。
多练习,提高编程速度。

实验评语 成绩:
日期: 年 月 日 教师:

You might also like