11.26 +C语言总结
来源:互联网 发布:js@700iiii.cc 编辑:程序博客网 时间:2024/06/04 19:41
数字进制转换:
#include <stdio.h>//数字进制转换void func(void){ //输入要转换的数字 int a = 0, b = 0; printf("输入正整数:"); scanf("%d", &a); if (a < 0) { return; } printf("输入要转换的进制:"); scanf("%d", &b); //定义一个数组,保存转换的进制数 char arr[100] = {0}, i = 0; do { arr[i] = a % b; a = a / b; i++; //保存到数组中,数组中从头到尾保存的是个位到高位 }while (a > 0); for (i=i-1; i>=0; i--) { //小于10直接输出。 if (arr[i] < 10) { printf("%d", arr[i]); } else//大于10减去10以内的数。 { printf("%c", arr[i]-10+'A'); } } printf("\n");}int main(void){ func(); return 0;}
数组:
数组是某一种数据类型的集合,本质上是声明数组的同时,在内存上申请一段连续的空间,用来存储数据,程序结束前,内存不释放。
数组有字符数组,有浮点数的数组。有很多的。有一维的数组,也有二维的数组。但是二维数组本质上在内存中还是线性的存储。因为内存是一维线性的。
#include <stdio.h>int main(void){ char a[10];申请了一段10*1的空间。存储char类型的数字,每段大小为10 char b[10][100];申请了一段10*100*1的空间。存储char类型的数字,每段大小为100*1 int c[10];申请了一段10*4的空间。存储Int类型的数字,每段大小为10 int b[10][100];//申请了一段10*100*4的空间。存储Int类型的数字,每段大小为100*4 return 0;}
数组进行的操作,冒泡排序,选择排序,二分查找(有序的序列。)都是int型的数组的操作。
//冒泡排序#include <stdio.h>int main(void){ int i = 0, j = 0, k = 0; int a[10]; for(i=0; i<10; i++) { scanf("%d", &a[i]); } for(i=0; i<10-1; i++) { for(j=0; j<10-i-1; j++) { if(a[j] > a[j+1]) { //寻找最大的数,放到最后一位,之后每次运行之后,把最后一位忽略。 k = a[j]; a[j] = a[j+1]; a[j+1] = k; } } } for(i=0; i<10; i++) printf("%5d", a[i]); return 0;}
//选择排序。#include <stdio.h>int main(void){ int i = 0, j = 0, k = 0; int a[10]; for(i=0; i<10; i++) { scanf("%d", &a[i]); } for(i=0; i<10-1; i++) { for(j=i+1; j<10; j++) { if(a[i] > a[j])//每次比较相邻两个,符合条件,执行if语句。 { k = a[i]; a[i] = a[j]; a[j] = k; } } } for(i=0; i<10; i++) { printf("%d", a[i]); }}
//二分查找,必须有序#include <stdio.h>#include <string.h>int main(void){ int i = 0, j = 0, k = 0; int left = 0, right = 0; int mid = 0; int a[10]; for(i=0; i<10; i++) scanf("%d", &a[i]); printf("enter a number to serch"); scanf("%d", &k); left = 0; right = 10 -1; while(left <= right) { mid = (left + right) / 2; if(a[mid] < k) left = mid + 1;//如果找到,比中间值大,左值变为mid+1 if(a[mid] > k) right = mid - 1;//如果找到,比中间值小,右值变为mid-1 if(a[mid] == k) { printf("find\n"); printf("%d\n", mid);//如果找到,退出。 break; } } return 0;}
函数使用:
例子:
简单的传值调用:
#include <stdio.h>void change(int a,int b)//有返回类型void改为返回的数据类型{ int c = 0; c = a; a = b;//交换a b的值 b = c; // return 符合数据类型的值或者表达式,或者递归的函数,递归的函数最后必须有返回的条件。}int main(void){ int a = 1, b = 2; change(a,b);//传的是值,没有改变实质 printf("a = %d b = %d\n", a, b);//打印后发现a和b的值不变 return 0;}
//交换两个数字的值。#include <stdio.h>void change(int *a, int *b){ int c = 0; c = *a; *a = *b;//交换两个值地址上的值。 *b = c;}int main(void){ int a = 1, b = 2; change(&a,&b);//传的是地址。改变了实质 printf("a = %d b = %d\n", a, b);}
字符串的操作也类似
#include <stdio.h>#include <string.h>//循环右移:2位->891234567void func(char buf[], int steps){ int i = 0, j = 0, lenth = 0; char temp = 0; lenth = strlen(buf); for (i=0; i<steps; i++) // 等同于 while (steps--) { temp = buf[lenth-1]; for (j=lenth-1; j>0; j--) { buf[j] = buf[j-1]; } buf[0] = temp; }}int main(void){ char buf[] = "123456789"; int steps = 0; printf("输入要移动的位数:"); scanf("%d", &steps); printf("buf = [%s].\n", buf); func(buf, steps); printf("buf = [%s].\n", buf); return 0;}
阅读全文
1 0
- 11.26 +C语言总结
- 【总结】C语言总结!!!
- [C语言]C总结
- C语言变量总结
- C语言要点总结
- C语言总结
- C语言输入输出总结
- C语言static总结
- C语言优先级总结
- C语言static总结
- C语言总结
- C语言输入输出总结
- c语言学习总结
- C语言输入输出总结
- C语言输入输出总结
- C语言总结
- C语言学习总结
- 嵌入式C语言总结
- eclipse创建maven项目时,添加src/main/java会提示 The folder is already a source folder.解决方法
- Python环境下,返回脚本所在的位置
- 点击按钮,实现60秒倒计时效果(发送手机验证码)
- JWT如何在Spring Cloud微服务系统中在服务相互调时传递
- Webpack3.0小案例(二) -- css处理与ES6编译
- 11.26 +C语言总结
- linux shell通过i2cget命令获取I2C器件寄存器的值
- php phpqrcode 生成二维码
- Json,String,Map 三种数据之间的转换
- 中国最火的神话人物形象,除了大圣,非他莫属
- win10无法访问共享解决办法
- Linux文件系统被占用,磁盘使用量与实际不一致
- Spring 事务
- 设计一个通用的BaseActivity