2016-1
//假设有包含m个元素的整型数组a,该数组中存放了m个不重复的整数
//编写函数求数组a中第k大的整数。
#include<stdio.h>
#include<stdlib.h>
#include<math.h>
#define M 10
int main() {
int a[M] = { 5,7,9,12,10,1,9,2,1,13};
int i, j, k;
int temp;
scanf("%d",&k);
for (i = 0; i < M; i++)
for (j = 0; j < M - i; j++) {
if (a[j] < a[j + 1]) {
temp = a[j];
a[j] = a[j + 1];
a[j + 1] = temp;
}
}
printf("第%d大的数:%d",k,a[k-1]);
system("pause");
return 0;
}
2016-2
假设利用整型数组存储二进制数,即数组的一个元素存放二进制数的一位。
编写函数实现该存储形式的二进制的加1运算
#include<stdio.h>
#include<stdlib.h>
#include<math.h>
typedef struct Snode
{
int data;
Snode *next;
}Snode, *PSnode;
PSnode CreatListF(void) {
int num;
PSnode head;
Snode *s;
head = NULL;
printf("请输入一个二进制数(空格隔开,-1结束):\n");
scanf("%d",&num);
while (num != -1) {
s = (Snode*)malloc(sizeof(Snode));
if (s == NULL) return nullptr;
s->data = num;
s->next = head;
head = s;
scanf("%d", &num);
}
return head;
}
void output(PSnode&L) {
PSnode p = L;
while (p) {
printf("%d ",p->data);
p = p->next;
}
printf("\n");
}
void BinaryAddOne(PSnode&L)
{ //链表表头到表尾依次为高位到低位
PSnode Temp, q, p, s;
q = L->next; //遍历查找的头指针
p = L;
s = NULL; //查找0位的标记指针
while (q)
{
if (q->data == 0)
s = q; //记录从最高位开始的最后一个0位的位置
q = q->next;
}
if (s)
{
s->data = 1; //记录的位置变为1
s = s->next;
while (s)
{
s->data = 0;//其后边的1位全变为0
s = s->next;
}
}
else
{//Temp 为二进制位满1时新进位空间开辟指针 形如1 3 7 15等二进制表示的下一个高位
Temp = new Snode;
Temp->data = 1; //采用头插法进行新进位的添加
Temp->next = p->next;
p->next = Temp;
while (Temp) //新进位后的所有1位全变为0
{
Temp->data = 0;
Temp = Temp->next;
}
}
}
int main() {
PSnode h=CreatListF();
output(h);
BinaryAddOne(h);
output(h);
system("pause");
return 0;
}
2016-3
#include<stdio.h>
#include<stdlib.h>
#define A 5
#define B 4
void output(int *str,int n) {
int i;
for (i = 0; i < n; i++) {
printf("%d ",str[i]);
}
printf("\n");
}
void output(char *ch,int *str, int n) {
int i;
printf("%s",ch);
for (i = 0; i < n; i++) {
printf("%d ", str[i]);
}
printf("\n");
}
int* interse(int *str1,int *str2 ,int size) {
int *in = (int*)malloc(size*sizeof(int));
int i;
for (i = 0; i < size; i++) {
if (str1[i] == str2[i]) {
in[i] = 1;
}
else {
in[i] = 0;
}
}
return in;
}
int* union_(int *str1, int *str2, int size) {
int *un = (int *)malloc(size*sizeof(int));
int i;
for (i = 0; i < size; i++) {
if (str1[i] == 1 || str2[i] == 1) {
un[i] = 1;
}
else {
un[i] = 0;
}
}
return un;
}
int main() {
int a[A] = { 1,0,1,1,0 }, b[B] = {0,0,0,1};
int *in, *un;
int min, max;
output(a, A); output(b, B);
if (A > B) {
min = B;
max = A;
}
else {
min = A;
max = B;
}
in = interse(a, b, min);
un = union_(a, b, max);
output("交集:",in, min); output("并集:",un, max);
system("pause");
return 0;
}
2016-4
#include<stdio.h>
#include<stdbool.h>
#define N 100
int main() {
bool jude(char talk[]);
char talk[N];
printf("输入对话:");
gets_s(talk);
if (jude(talk))
printf("是两机器人的对话");
else
printf("不是两机器人的对话");
printf("\n");
}
bool jude(char talk[]) {
int i;
if (talk[0] != 'Y' && talk[0] != 'N' && talk[0] != '2')
return false;
for (i = 0; talk[i] != '\0'; i++) {
if (talk[i] == 'Y' || talk[i] == 'N') {
if (talk[i + 1] != 'Y'&&talk[i + 1] != 'N'&&talk[i + 1] != '2')
return false;
}
else if (talk[i] == '2') {
if (talk[i + 1] != 'y'&&talk[i + 1] != 'n'&&talk[i + 1] != '1'&&talk[i + 1] != '\0')
return false;
}
else if (talk[i] == 'y' || talk[i] == 'n') {
if (talk[i + 1] != 'y'&&talk[i + 1] != 'n'&&talk[i + 1] != '1')
return false;
}
else if (talk[i] == '1') {
if (talk[i + 1] != 'Y'&&talk[i + 1] != 'N'&&talk[i + 1] != '2'&&talk[i + 1] != '\0')
return false;
}
else
return false;
}
return true;
}
吉林大学967-高级语言程序设计-2016
猜你喜欢
转载自blog.csdn.net/qq_36109528/article/details/86231675
今日推荐
周排行