实验1.1 随机打印hi,november
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <windows.h>
#define N 80
void print_text(int line, int col, char text[]);
void print_spaces(int n);
void print_blank_lines(int n);
int main() {
int line, col, i;
char text[N] = "hi, November~";
srand(time(0));
for(i = 1; i <= 10; ++i) {
line = rand() % 25;
col = rand() % 80;
print_text(line, col, text);
Sleep(1000);
}
return 0;
}
void print_spaces(int n) {
int i;
for(i = 1; i <= n; ++i)
printf(" ");
}
void print_blank_lines(int n) {
int i;
for(i = 1; i <= n; ++i)
printf("\n");
}
void print_text(int line, int col, char text[]) {
print_blank_lines(line-1);
print_spaces(col-1);
printf("%s", text);
}
实验2.1
static 1.静态局部变量,变量的存储区域由栈变为静态常量区,生命周期由局部变为全局,作用域不变
#include<stdio.h>
long long fac(int n);
int main(){
int i,n;
printf("Enter n:");
scanf("%d",&n);
for(i=1;i<=n;i++){
printf("%d!=%11d\n",i,fac(i));
}
return 0;
}
long long fac(int n){
static long long p=1;
printf("p=%11d\n",p);
p=p*n;
return p;
}
![]()
实验2.2
#include<stdio.h>
int func(int,int);
int main(){
int k=4,m=1,p1,p2;
p1=func(k,m);
p2=func(k,m);
printf("%d,%d\n",p1,p2);
return 0;
}
int func(int a,int b){
static int m=0,i=2;
i+=m+1;
m=i+a+b;
return m;
}
![]()
实验3
#include <stdio.h>
long long func(int n); // 函数声明
int main() {
int n;
long long f;
while (scanf("%d", &n) != EOF) {
f = func(n); // 函数调用
printf("n = %d, f = %lld\n", n, f);
}
return 0;
}
long long func(int n){
long long ans;
if(n==0)ans=0;
// else if(n==1)ans=1;
else ans=2*func(n-1)+1;
return ans;
}
![]()
实验4
#include <stdio.h>
int func(int n, int m);
int main() {
int n, m;
while(scanf("%d%d", &n, &m) != EOF)
printf("n = %d, m = %d, ans = %d\n", n, m, func(n, m));
return 0;
}
int func(int n,int m){
int ans;
if(m>n)ans=0;
else if(m==n||m==0)ans=1;
else if(m==1)ans=n;
else ans=func(n-1,m)+func(n-1,m-1);
return ans;
}
![]()
实验5
#include <stdio.h>
int mul(int n, int m);
int main() {
int n, m;
while(scanf("%d%d", &n, &m) != EOF)
printf("%d * %d = %d\n", n, m, mul(n, m));
return 0;
}
int mul(int n,int m){
int t;
if(n==0||m==0)return 0;
if(n<m||n==m){t=n;n=m;m=t;
return n+mul(n,m-1);
}
else return n+mul(n,m-1);
}
![]()
实验6
#include<stdio.h>
#include<stdlib.h>
void hanoi(unsigned int n,char from,char temp,char to);
void moveplate(unsigned int n,char from,char to);
int step(int n);
int main(){
unsigned int n;
while(scanf("%u",&n)!=EOF){
hanoi(n,'A','B','C');
printf("一共移动了%d次",step(n));
}
return 0;
}
void hanoi(unsigned int n,char from,char temp,char to){
if(n==1)
moveplate(n,from,to);
else{
hanoi(n-1,from,to,temp);
moveplate(n,from,to);
hanoi(n-1,temp,from,to);
}
}
void moveplate(unsigned int n,char from,char to){
printf("%u:%c-->%c\n",n,from,to);
}
int step(int n){
if(n<=1)return 1;
else return 2*step(n-1)+1;
}
![]()
实验7
#include <stdio.h>
int is_prime(int n);
int main()
{
int num, f;
int stop = 0;
int i = 2;
while (i < 20)
{
i =i+2;
for (int j = 2; j < i; j++)
{
num = i - j;
f = is_prime(num);
if (f)
{
printf("%d = %d + %d\n", i, j, num);
stop = 1;
}
if (stop) break;
}
stop = 0;
}
return 0;
}
int is_prime(int n)
{
if (n == 1) return 0;
for (int i = 2; i < n; i++)
{
int stop = 0;
if (n % i == 0)
{
return 0;
stop = 1;
}
if (n == 2 || (n % i != 0 && i == n - 1)) return 1;
if (stop) break;
}
}
![]()
实验8
#include <stdio.h>
#include<stdlib.h>
#include<math.h>
long fun(long s); // 函数声明
int main() {
long s, t;
printf("Enter a number: ");
while (scanf("%ld", &s) != EOF) {
t = fun(s); // 函数调用
printf("new number is: %ld\n\n", t);
printf("Enter a number: ");
}
return 0;
}
long fun(long s){
int n;
int i = 0;
int count = 0;
while (s!=0)
{
n = s % 10;
if (n % 2 != 0)
{
i = n * pow(10, count) + i;
count++;
}
s = s / 10;
}
return i;
}
![]()